我想在保存模型後執行的rails中創建回調函數。如何從模型中檢測屬性更改?
我有這樣的模型中,具有屬性「狀態」取決於權利要求的狀態,可能的值之前,背書,覈准這改變要求,拒絕
該數據庫具有「國家」用默認'pending'的值。
我想在第一次創建模型或從一個狀態更新到另一個狀態之後執行某些任務,具體取決於它從哪個狀態變化而來。
我的想法是在模型的函數:
after_save :check_state
def check_state
# if status changed from nil to pending (created)
do this
# if status changed from pending to approved
performthistask
end
我的問題是我怎麼檢查模型中的變化之前,前值?
保存模型後,這是行不通的,這是他要求的。 – 2012-06-27 15:37:40
@TomRossi,'dirty'調用在'after_save'中工作(都在Rails 2.3和3.x中)。我已經使用過好幾次了。 – 2012-06-27 15:54:17
@TomRossi,在提交後重新設置髒標誌,所以它們不會在Rails 3.x中引入的'after_commit'回調中可用。他們當然會在'after_save'中工作。 – 2012-06-27 15:56:07