Jam*_*ath 20 activerecord ruby-on-rails resque after-create
简单的问题.我有一个ActiveRecord模型,我希望在保存记录后执行后期处理.所以在模型中我有一个queue_for_processing方法,可以将作业粘贴到我的Resque队列中.为了在我的记录成功持久化后执行此操作,我在我的模型中编写了以下内容:
after_create :queue_for_processing
Run Code Online (Sandbox Code Playgroud)
很简单.我原以为一切都按预期工作除了昨晚我的redis服务器发生故障,事情发生了变化.我的期望是记录仍然会被保存,我可以稍后手动处理该作业.但是queue_for_processing方法抛出异常(预期行为)并停止保存记录.
我误解了after_create是如何工作的吗?或者我的理解是否正确并且发生了什么时髦?
谢谢.
ron*_*chn 37
是的,回调都包含在交易中.
基本上,以下将导致回滚:
before_save或类似的回调before_save或类似的回调after_save或类似的回调(after_create)以下内容不会导致回滚:
after_save或类似的回调after_commit如果您不希望异常导致回滚,请使用 after_commit