【发布时间】:2013-05-06 08:59:17
【问题描述】:
我有 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,它也会添加对象。无论如何,这似乎是一种奇怪的方式。
做这种事情的正常方法是什么?
【问题讨论】:
标签: ruby-on-rails activerecord transactions