【问题标题】:add to has_many association and use activerecord callback添加到 has_many 关联并使用 activerecord 回调
【发布时间】: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


    【解决方案1】:

    你可以使用

    foo.bars.build
    

    初始化一个属于foobar

    【讨论】:

    • so bar = foo.bars.build 和我上面所做的一样,只是它没有保存它?
    • 是的,就是创建一个属于foo的bar,bar是在保存foo的时候保存的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多