今日初めて見たメソッドpluralize
- 英訳すると意味は「複数(形)にする」
その名の通り、レシーバにとった文字列を複数形にしてくれます
'adult'.pluralize => "adults"
すごい〜、でも、これでchild
の複数形がchilds
とか言ってきたらおもしろいな…と思いながら試してみる
'child'.pluralize => "children"
おっ👀末尾がs
じゃない複数形もちゃんと対応してくれている!!
そして、何やら引数count にオプションで数字を指定できるらしいのでやってみる
文字列.pluralize(count)
'day'.pluralize(2) => "days"
ちなみにオプションに1を取ると、単数形のままにしてくれる
'day'.pluralize(1) => "day"
0とか負の数でもちゃんと単数・複数を認識できるのか実験
'day'.pluralize(0) => "days" 'day'.pluralize(-1) => "days" 'day'.pluralize(-2) => "days"
🤔そこまではしてくれないらしいので調べてみると、Railsガイドに載ってた
pluralizeメソッドではオプションでcountパラメータを使えます。count == 1を指定すると単数形が返されます。countがそれ以外の値の場合は複数形を返します(訳注: 英語では個数がゼロや小数や負の数の場合は複数形で表されます)。
なるほど〜単純に1
の場合しか単数にしてくれないみたい。ていうかそもそも、0とか-1とかって普通に英語だと単数なのか複数なのかわからないや。0day ?
0days ? -1day ? -1days ?
そして
Active Recordでは、モデル名に対応するデフォルトのテーブル名を求めるときにこのメソッドを使います。
らしいので、0とか負の数に対応してなくても、Rails的には困らないのかなと思った。
もし、別の用途で0
と-1
にどうしても対応させたかったとしても、自分で条件分岐書けばなんとかできてしまいそうだしね。それか、私が知らないだけで別のもっと使えるメソッドがあるのかも。
久々にメソッドの挙動とか見てたらおもしろかった…新しい技術のキャッチアップもしなくちゃいけないけど、こういう時間も大事にしたいと思った今日でした