2012-07-18 54 views
4

在Ruby/Rails API http://api.rubyonrails.org/中查找方法的文檔的過程是什麼。如何查找ActiveRecord :: Base.update的文檔?

讓我們以方法ActiveRecord::Base.update爲例。它用在其中一個railscasts中。

  1. 沒有在API文檔沒有更新的提到的類 http://api.rubyonrails.org/classes/ActiveRecord/Base.html
  2. 有 一無所知update方法在源代碼基礎 https://github.com/rails/rails/blob/0065f378262dc3f47880ce6211c7474bc7d11f0b/activerecord/lib/active_record/base.rb
  3. 事實上,我甚至不能找到此方法包含在 ActiveRecord::Base中的任何類別中。

我懷疑這個方法是在ActiveRecord :: Relation中。但是,我不確定。

我是Ruby/Rails的初學者,我來自Java世界,我通常期望在類中的javadoc中看到所有方法(也繼承)。在Ruby/Rails的情況下,爲混合/繼承方法找到最有效的相關文檔是什麼?

在此先感謝!

+0

軌投它的使用? – Dougui 2012-07-18 17:10:29

+0

Backbone.js railcasts。這裏的鏈接代碼https://github.com/railscasts/325-backbone-on-rails-part-2/blob/master/raffler-after/app/controllers/entries_controller.rb – vrepsys 2012-07-18 17:13:23

+0

+1我很驚訝在簡單地尋找的「模式」。所有方法的文檔的困難,並在反應的第一個反應是如何回答關於更新當你清楚問的是一般情況。 Javadoc 1 - api.rubyonrails.org 0 – iftheshoefritz 2014-01-28 12:48:01

回答

3

您可能找不到關於ActiveRecord::Base#update的任何好文檔,因爲根據APIdock.,自Rails 2.3.8版本開始,該方法已被棄用。

您仍然可以使用它的原因是因爲它已被移動到ActiveRecord::Relation,這可以在rails/activerecord/lib/active_record/relation.rb中看到。

rails/activerecord/lib/active_record.rb包含所有autoload s爲ActiveRecord其中包括:Relation

的文檔ActiveRecord::Relation#update如下:

更新一個對象(或多個對象),並將其保存到數據庫中,如果 校驗通過。無論 對象是否已成功保存到數據庫,都會返回結果對象。

====參數

  • + ID + - 這應該是ID或ID的陣列,以進行更新。
  • + attributes + - 這應該是屬性或散列數組的散列。

====例子

# Updates one record 
Person.update(15, :user_name => 'Samuel', :group => 'expert') 

# Updates multiple records 
people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } }  
Person.update(people.keys, people.values) 

編輯:爲了回答你最初的問題,在大多數情況下,在api.rubyonrails.org做一個搜索,就足以找到你正在尋找的信息,只要因爲信息是最新的。

對於可能較舊的API詳細信息,請使用apidock.com/rails。做搜索有沒有「更新」真實地反映了兩個版本(::Base::Relation),併爲您說明每個什麼版本的每個導軌都在使用。

+0

確定嗎?我認爲它只是轉移到一個混合,遠離ActiveRecord :: Base代碼。這種方法的工作原理,我很確定我使用的是Rails 3.2.3。如果我錯了,請糾正我。 – vrepsys 2012-07-18 17:15:47

+0

這解釋了它的工作原理。謝謝。但是,最初的問題更多的是關於爲某種方法找到文檔的過程。有沒有一種方法可以在不知道rails代碼的情況下發現'update'在'Relation'中? – vrepsys 2012-07-18 18:06:35

+0

我補充說,指出使用API​​dock在官方文件,因爲它包含的Rails過去的版本,而從甚至僅僅幾年的歷史教程的學習,可以非常方便的編輯。 – 2012-07-18 18:21:00

1

的ActiveRecord :: Base.update沒有了,因爲你的存在可以在這裏看到:http://apidock.com/rails/ActiveRecord/Base/update/class,它的ActiveRecord ::現在的關係如下:http://apidock.com/rails/ActiveRecord/Relation/update其中

+0

如果它不存在,那它爲什麼會起作用?查看我對查爾斯考德威爾答案的評論。 – vrepsys 2012-07-18 17:18:55

+0

ActiveRecord :: Base包含ActiveRecore :: Relation的方法。見來源:https://github.com/rails/rails/blob/0065f378262dc3f47880ce6211c7474bc7d11f0b/activerecord/lib/active_record/base.rb – Dougui 2012-07-18 17:30:19