コントローラー経由でオブジェクトを作成しています。Aには sFoo
がたくさんありBar
ます。Bar
モデルには、有効であるために必要な検証がありますFoo
。
foo.rb
モデルでは:
has_many: bars
bar.rb
モデルでは:
validates_presence_of :foo
belongs_to: foo
でfoo_controller.rb
:
@foo = Booking.new(params[:foo]) # this has all the params needed to make a Foo.
@foo.create_bars(params[:bars])
foo.rb
モデルでは:
def create_bars(bars)
bars.each do |t|
bar = Bar.create({name: name, email: email, foo: foo})
bar.foo = self
self.bars << bar
bar.save
puts self.bars.to_s
end
end
のputs self.bars.to_s
これは本当に基本的なことのように聞こえますがfoo
、データベースに存在しないため、ActiveRecord はそれを nil と見なし、それが保存されない理由ですか? どうすればこれを正しく書くことができますか?