Rails 5 弃用警告 "The behavior of `attribute_change`"

Rails 5 Deprecation Warning "The behavior of `attribute_change`"

我正在尝试从 4.2 升级到 Rails 5.1.0 并在 运行 我的 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)

我检查了一些类似的 Whosebug 问题,但 none 似乎与我的情况非常相符。我正在使用 elasticsearch 和 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

重构它以维护现有功能并删除这些弃用警告的最佳方法是什么?

谢谢!

我将方法的主体更改为

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

它似乎工作相同,但没有百万弃用警告。

changed? 似乎也是如此,现在更喜欢称为 saved_changes?