モデル間の関連付けの際に、データを保存したくない場合はbuild
を使うが、
関連付けのパターンによって、メソッド名が変わるので、メモをしておく
モデル定義
class Car < ActiveRecord::Base
has_one :engine
end
class Engine < ActiveRecord::Base
belongs_to :car
end
buildによる関連付け
-
メソッド名:
build_関連付けメソッド名
-
使用例:
@car.build_engine(name: "エンジン1")
モデル定義
class Car < ActiveRecord::Base
has_many :wheels
end
class Wheel < ActiveRecord::Base
belongs_to :car
end
buildによる関連付け
-
メソッド名:
関連付けメソッド名.build
-
使用例(関連付け一つの場合):
@car.wheels.build(name: "車輪1")
-
使用例(関連付け複数の場合):
@car.wheels.build({ name: "車輪1" }, { name: "車輪2" })
モデル定義
class Car < ActiveRecord::Base
has_many :race_entries
has_many :drivers, through: :race_entries
end
class Driver < ActiveRecord::Base
has_many :race_entries
has_many :cars, through: :race_entries
end
class RaceEntry < ActiveRecord::Base
belongs_to :car
belongs_to :driver
end
buildによる関連付け
-
メソッド名:
関連付けメソッド名.build
-
使用例:
@car.drivers.build(car_id: 1, name: "山田太郎", age: "30歳")
- これを保存すると、中間テーブルにも自動的に反映される
わかりやすかったです!!
ありがとうございます!!