質問: 例えば Userがhas_many: tweetsで Tweetがbelongs_to: userだったとき 通常は tweetをコントローラ側のcreateアクションで 何らかの形でユーザーを特定するパラメーターを渡した上で Tweet.createしますよね? RailsはO/Rマッピングによりモデルオブジェクトを通してテーブルを操作できるという認識だったんですが 先程current_user.tweets.createとしているコードに出会いまして(つまりユーザーを特定するパラメーターを渡してない) これによって、結局「create」や「find」などは何に対して使えるメソッドなのかわからなくなりました。 この理論で行くとcurrent_user.tweets.createではなく、tweets.createにユーザーを特定するパラメーターを渡すパターンでもいけるような気がするのですが.... これはcurrent_userというモデルオブジェクトを一回指定することで、Tweet.createのような動きが可能になるということでしょうか?
回答: > > current_user.tweets.create > > > `has_many`で生えた複数形のメソッドには、いろんな機能が備わっています(Rails Guide)。そのリレーションにまつわるデータの`create`や`destroy`も可能です。 > > この理論で行くとcurrent_user.tweets.createではなく、tweets.createにユーザーを特定するパラメーターを渡すパターンでもいけるような気がするのですが.... > > > もちろん、`Tweet.create`に`user_id`を渡す、という方法でも大丈夫です。