gpt4 book ai didi

ruby-on-rails - Rails不会触发我的after_commit回调

转载 作者:行者123 更新时间:2023-12-03 16:20:19 24 4
gpt4 key购买 nike

您好,我有一个特殊的问题。我使用after_commit回调发送通知,但似乎根本没有触发该回调。简化后的情况看起来像这样:

class Message < ActiveRecord::Base
after_commit :do_something

def do_something
raise 'Doing something'
end
end

然后,我希望在打开控制台并创建消息时看到加薪。但是什么也没发生。此外,如果我完全删除'do_something'方法,rails甚至不会提示。请注意,这不是使用交易固定装置的测试。我什至在数据库中看到提交的记录。我的rails版本是3.0.9。感谢您的帮助,尤其是如果它很好:-)

编辑:后来我了解到,将代码部署到另一台计算机时会触发回调DID。因此,这一定与我的设置有关。不过,我仍然感谢您对可能导致此问题的见解。

Edit2:从评论。
  • 该数据库是MySQL,因此存在事务。
  • 指定回调的操作无济于事(:on =>:create)。
  • 我需要after_commit而没有其他回调
  • 最佳答案

    大卫在问题评论中提到了这种行为的解释。

    Transaction Callbacks documentation

    "If any exceptions are raised within one of these callbacks, they will be ignored so that they don't interfere with the other callbacks. As such, if your callback code could raise an exception, you'll need to rescue it and handle it appropriately within the callback."



    也可以看看:
  • Rails Github Issue 3205
  • Pull request #11123
  • 关于ruby-on-rails - Rails不会触发我的after_commit回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084482/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com