我正在使用 ActiveRecord::Relationdelete_by方法洗掉記錄,但這不是觸發after_commit和after_destroy回呼。請參見下面的示例:
class User < ActiveRecord::Base
after_commit :expire_cache
after_destroy :expire_cache
def expire_cache
puts "expire_cache is called"
end
end
User.delete_by(user_id: 1234) # doesn't trigger expire_cache method
我對回呼的期望是否正確?我究竟做錯了什么?
uj5u.com熱心網友回復:
我對回呼的期望是否正確?
不,您期望觸發回呼delete_by是錯誤的。
我究竟做錯了什么?
您的理解與檔案不符。
根據檔案,跳過回呼
delete_all將跳過callbacks
delete_all就像驗證一樣,也可以跳過回呼。
- 但是,應該謹慎使用這些方法,因為重要的業務規則和應用程式邏輯可能保存在回呼中。在不了解潛在影響的情況下繞過它們可能會導致資料無效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460237.html
上一篇:如何從本地存盤中洗掉物件
