[英]Rails callback changed attribute
我的用戶模型中有一個before_save回調:
before_save :notify_management, :if => lambda { |u| u.approved }
這樣做的目的是當人們將批准從false
更改為true
,才通知管理人員。 但是,一旦將其更改為true,並在User模型上進行了任何形式的更改,該調用就會被調用,我不希望這樣。 我想從改變時,它只會叫non true
(零或false)值為true
。
我該怎么做?
因此,首先讓我們看看您的代碼實際上是做什么的,
您正在觸發before_save回調,因此無論:notify_management
創建或更新記錄:notify_management
都會被調用。 使用附加的條件,只要保存一條記錄並且用戶批准的屬性為true
( false
或nil
除外),就會調用:notify_management
。
您只想在屬性從false更改為true時執行此操作。 因此使用:
before_save :notify_management, :if => lambda { |u| u.approved && u.approved_changed? }
通過添加第二部分,它將僅在該屬性已更改(從false => true或true => false更改)時觸發,並將其與您已經擁有的屬性結合起來,僅當值從false => true更改時才觸發
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.