爲了任何人看到這個以後,因爲它目前(8月2017)上衣谷歌:值得一提的是,這種行爲將在的Rails 5.2改變,並有廢棄警告像Rails 5.1的,因爲ActiveModel::Dirty改變了一下。
我該怎麼改變?
如果您使用attribute_changed?
方法在after_*
-callbacks,你會看到這樣的警告:
棄用警告:attribute_changed?
內回調後的行爲將在未來版本中改變的Rails。新的返回值將反映在返回save
之後調用方法的行爲(例如,它現在返回的結果的相反方向)。要保持當前行爲,請改爲使用saved_change_to_attribute?
。 (在/PATH_TO/app/models/user.rb:15從some_callback調用)
因爲它提到,你可以用saved_change_to_attribute?
更換功能輕鬆解決這個問題。例如,name_changed?
變成saved_change_to_name?
。
同樣的,如果你使用的attribute_change
拿到前後對照值,這改變以及和引發以下:
棄用警告:attribute_change
行爲的內部回調後將會改變在下一個版本的Rails中。新的返回值將反映在返回save
之後調用方法的行爲(例如,它現在返回的結果的相反方向)。要保持當前行爲,請改爲使用saved_change_to_attribute
。 (在從/PATH_TO/app/models/user.rb:20稱爲some_callback)
再次,如它提到,該方法更名爲saved_change_to_attribute
返回["old", "new"]
。 或使用saved_changes
,它會返回所有更改,並且這些更改可以作爲saved_changes['attribute']
訪問。
已經將它綁定在Rails 2.0.5中 - 完美工作 – stephenr 2010-10-05 08:27:58
忘記我上面所說的 - 它在Rails 2.0.5中不起作用。所以一個有用的添加到Rails 3. – stephenr 2010-10-05 08:34:29
正確的,很好的工具 - Rails 2.3.8包括在內。 – modulaaron 2010-10-05 08:36:40