我有 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 时创建条。
我看到有人建议使用事务并挽救 ActiveRecord::RecordInvalid 异常。但是,保存!抛出其他类型的异常,我不认为我想捕获每个异常,因为这会掩盖我想要展示的问题。
我也尝试在 Bar 的模型中说
before_create { foo.save }
但这并没有像我想要的那样工作。即使保存返回false,它也会添加对象。无论如何,这似乎是一种奇怪的方式。
做这样的事情的正常方式是什么?