newとbuildに違いはあるのか
結論から言うと機能的な違いはないようで、buildは「newメソッドのエイリアス」とのこと。
new - リファレンス - - Railsドキュメント
コンソールで試してみたらたしかに違いはなさそう。
[3] pry(main)> company = Company.new(id: 1) => #<Company:0x007fc4d742ff38 id: 1, name: nil, address: nil, phone_number: nil, mail_address: nil, created_at: nil, updated_at: nil> [7] pry(main)> company.departments.new => #<Department:0x007fc4d70c9948 id: nil, name: nil, company_id: 1, deleted_at: nil, created_at: nil, updated_at: nil> [8] pry(main)> company.departments.build => #<Department:0x007fc4d31e0560 id: nil, name: nil, company_id: 1, deleted_at: nil, created_at: nil, updated_at: nil>
ただ、暗黙的な使い分けはあるようで、
モデルの関係が1:nのとき、1のものにはnewを、nのものにはbuildを使うみたい。
(たしかにドキュメントの例でもそうなってる…)
[Rails][ActiveRecord]modelのnewとbuildの違いについて | Coffee Breakにプログラミング備忘録
例えば、Company(会社)とDepartment(部署)で1:nだとしたら、
Company.new
company.departments.build
となる。