【问题标题】:is there a way to set after_commit callbacks to a specific ActiveRecord transaction有没有办法将 after_commit 回调设置到特定的 ActiveRecord 事务
【发布时间】:2023-03-27 14:10:02
【问题描述】:

我正在以这种方式创建 ActiveRecord 事务

ActiveRecord::Base.transaction do
  MyModel.create!(name: "value")
  OtherModel.create!(name: "value")
end

我想为此事务设置一个特定的after_commit 回调。我不想将它附加到任何一个模型上,因为我不会在每次单独创建其中一个时执行它。

我也不能简单地在transaction 块的末尾写一些代码,因为可能真正的事务是在这段代码之外创建的(我没有将require_new 选项设置为true

有没有办法为特定的事务实例设置回调?

非常感谢

【问题讨论】:

  • 请问您为什么不想将它们添加到模型中?那是要做的事情,我认为不可能按照您的建议去做。但是,我们可能会找到一种方法来解决您不想触摸模型的任何原因。
  • 您可以将事务包装在 begin rescue 块中,并在事务之后立即调用 after_commit 。如果交易失败,区块会被救出,回调不会被调用。

标签: ruby-on-rails ruby activerecord transactions activesupport


【解决方案1】:

请看看这些宝石:

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2013-06-13
    相关资源
    最近更新 更多