我有一个巨大的模型,有一堆base.html
回调。
after_commit
问题出于某种原因,尽管在此数据库中保存了记录,但有时 after_commit :a, on: [:create, :update]
after_commit :b, on: :create
after_commit :c, on: :create
after_commit :d, on: [:create, :update]
after_commit :e, on: :destroy
after_commit :f, on: :destroy
上的回调无法运行。
我怀疑其中一个回调引发了异常,导致其他回调无法执行。 (或者还有其他原因吗?)
即使其他一些回调未能执行,我怎么能以执行的方式编写回调?
答案 0 :(得分:0)
见这里:http://guides.rubyonrails.org/active_record_callbacks.html#transaction-callbacks
如果某个事务中的回调失败,则其余部分将不会执行。
相反,请确保在回调方法中完全处理异常:
def a
begin
# try to do the action
rescue
# if you code fails it will go here, and you should clean it up appropriately
ensure
# something that will always execute, pass or fail
end
end