Rails 5 Предупреждение об устаревании "Поведение` attribute_change` " - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь перейти на Rails 5.1.0 с 4.2 и получаю эту ошибку при запуске моего набора тестов Rspec.

DEPRECATION WARNING: The behavior of `changed` inside of after callbacks will be changing in the next version of Rails. The new return value will reflect the behavior of calling the method after `save` returned (e.g. the opposite of what it returns now). To maintain the current behavior, use `saved_changes.keys` instead. (called from has_changes? at /Users/djohnson/projects/EvantaAccessAPI/app/models/user.rb:280)

Я проверил несколько похожих вопросов Stackoverflow, но ни один из них не соответствовал моему сценарию. Я использую эластичный поиск и chewy, и у меня есть эта строка в моей модели user.rb.

update_index('users') { self if has_changes? }

Который вызывает метод has_changes? ниже:

def has_changes?
  changes.empty? || (changes.keys & %w(first_name last_name title organization_name)).present?
end

Каков наилучший способ реорганизовать это, чтобы сохранить существующую функциональность и удалить эти предупреждения об устаревании?

Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Я изменил тело метода на

saved_changes.empty? || (saved_changes.keys & %w(first_name last_name title organization_name)).present?

, и, похоже, он работает так же, но без миллиона предупреждений об устаревании.

Похоже, то же самое относится и к changed?, который сейчаспредпочитает называться saved_changes?

...