基本原則
コントローラー・・・複数形
モデル・・・単数形、先頭大文字
で作成すると言うのはおなじみ。
$ rails g controller users
$ rails g model User
複数の単語を繋げたい場合
コントローラーの場合はアンダーバーで繋げる
モデルは大文字で繋げる
$ rails g controller user_profiles
$ rails g model UserProfile
この場合、モデルファイルはuser_profile.rbが生成され
モデルファイルの中は以下のようになる
ちなみに、$ rails g model user_profile としても同様の結果になるし
なんなら$ rails g model userとしてもきちんとUserモデルが生成されるので
大文字小文字やアンダーバーに関してはそこまで心配しなくても良さそう。
名前が統一されていて、単数・複数の別がしっかりされていればうまくいく模様。
単数形のモデルを生成すると複数形のテーブルが生成される
$ rails g model User → usersテーブル
$ rails g model Category → categoriesテーブル
単純にsをつけるだけでなくきちんと複数形にしてくれる
不可算名詞の場合
$ rails g model Address → addressesテーブル
あれっ・・・?笑
どうやら、中には不可算名詞であることを識別できずに
わざわざsやesをつけてくれてしまう場合もある模様。
そういった場合はconfig/initializers/inlrections.rbをいじればOK
デフォルトではこうなっている。
inflect.irregular 'person', 'people'
これはpersonが単数形の場合はpersonsではなくpeopleにしてね、という意味
inflect.uncountable %w( fish sheep )
これはuncountable = 不可算名詞の指定。
fishやsheepは不可算名詞の代表的なもの。
デフォルトではこの二つしか記述されていないので、今回のように
複数形にさせたくない名詞をモデル名に使用する場合はここに記述することで
実現することができる。
不可算名詞は避けよう
出来るだけ不可算名詞をモデルやコントローラー名に使用するのは避けた方がいいそう。
「誰が見ても分かりやすい名前づけ」はプログラミングにおいて必須だけど、
こういう迷いを発生させてしまうくらいであれば、
本当にその名詞(不可算名詞)を使う必要があるのか?をよく考えた上で使用するべきだそうです。