質問: たとえばカラムを追加するときは ``` rails generate migration AddTagToUsers name:string ``` というように**User**モデルは**Users**というように複数形になります。 そしてマイグレーションファイルの中身は ``` def change remove_reference :ticekts, <--これ :event, foreign_key: true end ``` このように複数形になっています。 かとおもうと、インスタンスを作るときは**User.new**と、単数形になります。 しかしhas_manyの関連づけをしているときは**User.notes.build**のように**User**モデルは単数形で、**note**モデルは複数形になります。 でも、paramsで値を取得するときは ``` params[:user][:name] ``` というように単数形になっています。 ほかにコードを見直してなかったのですが、きっとほかにもあるはずです。これはどのような規則で単数と複数を切り替えているのでしょうか?
回答: Ruby on Railsの命名規則は最初てこずりますよね。 英語圏の方は気にならないかもしれないですが。 rails generateで作成するとだいたい以下のようになるかと思います ``` controller → 複数形 - ファイル名:users_controller.rb - class名:UsersController model → 単数形 - ファイル名:user.rb - class名:User データベース → 複数形 - table名:users view → 複数形 - ディレクトリ名:users/ ``` といった感じ。 (この辺は慣れるしかないかも。。。) また、has_manyで指定した場合は、 ``` user.notes ``` は `user` というレシーバーに対して `note` が複数あるのがわかるようになっています。 ``` user.note # userから見たnoteが1つある user.notes # userから見たnoteが複数ある ``` とわざわざmodelを確認するまでもなくモデル間の関係がわかるわけです。 可読性を高める為にこのようになっているんでしょうね。