我有2个型号,Foo和Bar。 Foo has_many酒吧。我正试图在我的Foo模型中执行以下操作
add_bar?(blah)
bar = Bar.new
bar.foo = self
bars << bar
save
end
before_save do
#stuff involving bars that could potentially cause a rollback
end
这不起作用,因为将栏添加到栏中会保存它,我希望只有在保存Foo时才会创建栏。
我看到了someone suggest using a transaction并抢救了ActiveRecord :: RecordInvalid异常。但是,保存!抛出其他类型的异常,我认为我不想捕获每个异常,因为这会掩盖我想要显示的问题。
我也试过在Bar的模型中说
before_create { foo.save }
但这并不像我想的那样有效。即使保存返回false,它也添加了对象。无论如何,这似乎是一种奇怪的方式。
做这样的事情的正常方法是什么?
答案 0 :(得分:1)
您可以使用
foo.bars.build
初始化属于bar
foo