为什么不推荐使用ActiveRecord :: Base#update_attributes?

Eth*_*han 6 activerecord ruby-on-rails ruby-on-rails-3

我在这里的Rails文档中注意到该update_attributes方法已被弃用:

在最新稳定版本的Rails上不推荐使用此方法.此处显示了最新的现有版本(v2.3.8).

我很想知道它为什么被弃用以及它取而代之的是什么.

这对我来说不是一个巨大的后果,因为这个方法在我的Rails 2.x应用程序中运行良好.然而,有一天我希望升级到Rails 3,我想开始掌握我需要改变什么以及如何以不同方式完成工作.

car*_*iam 9

Apidock有点误导,实际上是"弃用或移动"; 后者是真的,前者不是.ActiveRecord::Base包含ActiveRecord::Persistence,定义#update_attributes.您可以在http://apidock.com/rails/ActiveRecord/Persistence/update_attributes上查看apidock上的文档.

虽然现在也在ActiveResource中,但是没有update_attributes的共享实现,你不应该在那里寻找与ActiveRecord :: Base相关的文档,反之亦然.


Eve*_*pes 7

在 Rails 6 中,它真的被弃用了。原因在这里讨论过:

https://github.com/rails/rails/pull/31998

解释是 update_attributes 和 update_attributes!只是更新和更新的别名!多年来,它们听起来令人困惑(因为它们的单一版本:update_attribute)。