Кожен, хто бачить це пізніше, як це наразі (серпня 2017 року) очолює google: Варто зазначити, що ця поведінка буде змінена в Rails 5.2 та має попередження про депресію щодо Rails 5.1, оскільки ActiveModel :: Dirty трохи змінився .
Що я можу змінити?
Якщо ви використовуєте attribute_changed?
метод у after_*
-викликах, ви побачите попередження типу:
ПОПЕРЕДЖЕННЯ ПОПЕРЕДЖЕННЯ. У attribute_changed?
наступній версії Rails поведінка всередині зворотних зворотних дзвінків буде змінюватися. Нове значення повернення відображатиме поведінку виклику методу після save
повернення (наприклад, протилежне тому, що він повертає зараз). Щоб зберегти поточну поведінку, використовуйте saved_change_to_attribute?
замість цього. (зателефонував з some_callback на /PATH_TO/app/models/user.rb:15)
Як згадується, ви могли це легко виправити, замінивши функцію на saved_change_to_attribute?
. Так, наприклад, name_changed?
стає saved_change_to_name?
.
Так само, якщо ви використовуєте значення attribute_change
для отримання попередніх значень, це змінюється і призводить до наступного:
ПОПЕРЕДЖЕННЯ ПОПЕРЕДЖЕННЯ. У attribute_change
наступній версії Rails поведінка всередині зворотних зворотних дзвінків буде змінюватися. Нове значення повернення відображатиме поведінку виклику методу після save
повернення (наприклад, протилежне тому, що він повертає зараз). Щоб зберегти поточну поведінку, використовуйте saved_change_to_attribute
замість цього. (зателефонували з some_callback на /PATH_TO/app/models/user.rb:20)
Знову ж, як згадується, метод змінює ім'я, до saved_change_to_attribute
якого повертається ["old", "new"]
. або використовувати saved_changes
, що повертає всі зміни, і до них можна отримати доступ як saved_changes['attribute']
.