2011-04-25 26 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

相關問題