Alm*_*ron 12 deprecation-warning ruby-on-rails-5.1
我刚从Rails 5.0.0升级到5.1.1并开始收到大量的弃用警告:
弃用警告:
changed_attributes回调后内部的行为将在下一版本的Rails中发生变化.新的返回值将反映save返回后调用方法的行为(例如,与现在返回的方法 相反).要保持当前行为,请saved_changes.transform_values(&:first)改用.
还有这个:
弃用警告:
attribute_changed?回调后内部的行为将在下一版本的Rails中发生变化.新的返回值将反映save返回后调用方法的行为(例如,与现在返回的方法 相反).要保持当前行为,请saved_change_to_attribute?改用.
我没有在我的项目中的任何地方明确地使用这些方法,警告主要指向模型上的创建和更新调用.
我相信这是与我的验证,并after_update与after_create在那里我用confitions像回调if: { author_id_changed? },但我不知道该怎么办他们.
我也相信该警告是与这个庞大的更新ActiveRecord的.
非常感谢你能给予的任何一手牌.
UPD
这篇文章帮了很多!
对于After回调,您可以使用saved_change_to_attribute?
对于Before回调和验证,您可以使用will_save_change_to_attribute?
希望这些信息对您有所帮助!
小智 5
我已经升级到Rails 5.1.6并有相同的弃用警告。如果有人仍然想解决这个警告。以下是我采取的步骤:
搜索你所有的*_changed?
改变了这一点:
if name_changed?
...
if user_id_changed?
Run Code Online (Sandbox Code Playgroud)
如果它位于after_*(after_save、after_commit、after_update 等)块内:
if saved_change_to_name?
...
if saved_change_to_user_id?
Run Code Online (Sandbox Code Playgroud)
before_*如果它位于(before_save、before_commit、before_update 等)块内,则对此:
if will_save_change_to_name?
...
if will_save_change_to_user_id?
Run Code Online (Sandbox Code Playgroud)
在我看来,改变这一点是相当棘手的事情,因为我们已经习惯了attribute_changed?。但改变是好的。现在语法也更有意义了。
| 归档时间: |
|
| 查看次数: |
5442 次 |
| 最近记录: |