簡體   English   中英

Rails回調已更改屬性

[英]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都會被調用。 使用附加的條件,只要保存一條記錄並且用戶批准的屬性為truefalsenil除外),就會調用: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM