0

我有 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,它也会添加对象。无论如何,这似乎是一种奇怪的方式。

做这样的事情的正常方式是什么?

4

1 回答 1

1

您可以使用

foo.bars.build

初始化一个bar属于foo

于 2013-05-06T00:59:17.080 回答