リレーションするモデルも一気に保存したい、という場合の逆引きマニュアル的なもの
環境
$ bin/rails -v Rails 5.2.2
やり方
has_many
の場合と has_one
で書き方が違う
has_manyの場合
{{has_manyをつけたモデルのインスタンス}}.{{belongs_toのモデル名の単数}}.build
has_oneの場合
{{has_oneをつけたモデルのインスタンス}}.build_{{belongs_toのモデル名の単数}}
例
こんなモデルがある場合
class User < ApplicationRecord has_many :message has_one :user_profile end
class Message < ApplicationRecord belongs_to :user end
class UserProfile < ApplicationRecord belongs_to :user end
以下のように使う
user = User.new(name: "KenShiro") user.message.build(name:"Hello!") # => #<Message id: nil, name: "Hello!", user_id: nil, created_at: nil, updated_at: nil> user.build_user_profile(age:10) # => #<UserProfile id: nil, user_id: nil, age: 10, created_at: nil, updated_at: nil>
こんな感じで未保存のモデルが作られるので、userをsaveすれば連動して全てのレコードが作られる