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?
我正在尝试从 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?