2013-10-07 43 views
17

創建記錄時,是否有方法在after_commit上跟蹤對模型的更改?我嘗試過使用髒模塊,並且能夠在記錄更新時跟蹤更改,但是創建記錄時不會記錄更改。after_commit中的跟蹤模型更改:on =>:創建回調

+0

剛剛創建什麼東西時,會發生什麼變化? –

+0

從零到有效值的字段。 –

回答

45

您不能使用導軌changed?方法,因爲它總是會返回false。要在事務提交後跟蹤更改,請使用previous_changes方法。它將返回一個帶有屬性名稱的散列作爲關鍵字。然後,您可以檢查您的attribute_name是否在哈希中:

after_commit :foo 

def foo 
if previous_changes[attribute_name] 
    #do your task 
end 
end 
+4

謝謝!爲了檢查哈希是否包含你的屬性,你可以做這樣的事情'if @ item.previous_changes.has_key?('attribute_name')' –