railsのnewとbuildの違い
結論からいうと、ありません。
user = User.first user.comments.new => #<Comment id: nil, body: nil, user_id: 1, created_at: nil, updated_at: nil> irb(main):005:0> user.comments.build => #<Comment id: nil, body: nil, user_id: 1, created_at: nil, updated_at: nil>
昔は、newだと上のuser_idが入らなかったみたいですね。
今はどちらも入るようになっています。
そのため、慣習的に関連するモデルを生成するときは、build
を使うようです。
User.new(user_params) user = User.find(params[:id]) user.comments.build(comment_params)
def build(attributes = {}, &block) @association.build(attributes, &block) end alias_method :new, :build ←むしろnewをエイリアスにしている
こんな感じです。
以上です。