2011-04-25 29 views
6

我在Rails的文档here注意到update_attributes方法已经过时:为什么不建议使用ActiveRecord :: Base#update_attributes?

此方法已on Rails的最新稳定版本。这里显示了最新的现有版本(v2.3.8)。

我很想知道为什么它被弃用,什么是它的首选。

这对我来说并不是一个巨大的后果,因为该方法在我的Rails 2.x应用程序中正常工作。但是,为了有朝一日升级到Rails 3,我希望开始掌握我需要改变的内容以及如何改变事情。

+0

APIDock文档的另一部分未将其列为弃用[旧](http://apidock.com/rails/ActiveRecord/Base/update_attributes)与[新](http://apidock.com/rails/ActiveResource/Base/update_attributes) – Zabba 2011-04-30 03:57:16

+0

APIDock现在在其“类似方法”列表中列出了活动资源版本。 – 2011-06-15 16:50:56

+0

快点 - 你将不得不从Rails 2转到Rails 4. http://weblog.rubyonrails.org/2011/12/20/rails-master-is-now-4-0-0- beta/ – Andrew 2012-03-14 19:44:17

回答

9

Apidock提的是有点误导,它实际上说“过时或移动” ;后者是真的,前者不是。 ActiveRecord::Base包括ActiveRecord::Persistence,它定义了#update_attributes。您可以通过http://apidock.com/rails/ActiveRecord/Persistence/update_attributes在apidock上查看此文档。

虽然现在也在ActiveResource中,但没有共享的update_attributes实现,您不应该在那里查看ActiveRecord :: Base相关文档,反之亦然。

+0

作为补充说明:'ActiveRecord :: Persistence'包含在'ActiveRecord :: Base'中。所以实际上除了方法定义的物理位置之外没有任何改变。 – 2012-03-14 19:58:53

2

根据我的理解,它不会被弃用,这是从ActiveRecord进入ActiveResource提取出来,作为release notes 3.0

+0

ActiveRecord和ActiveResource是两个非常不同的东西,ActiveRecord不需要ActiveResource。尽管从用户的角度来看这两者看起来都很相似,但这些方法完全没有关系。 carpeliam的答案是正确的。 – 2012-03-14 19:55:10

相关问题