Railsモデルの関連付けでbuildを使う時のメソッド名
モデル間の関連付けの際に、データを保存したくない場合は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歳")