2011-12-18 47 views
0

爲什麼ActiveRecord::Base中定義的all方法未在documentation中列出?爲什麼在文檔中未列出ActiveRecord :: Base中定義的所有方法?

我知道它在這裏被定義,因爲我跑Post.method(:all).source_location和得到這個輸出:因爲它是由delegate「宏觀」和文檔生成定義

["/Users/space/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/base.rb", 
440] 
+0

有趣的是,'all'方法在['default_scope'](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c- default_scope)方法描述中提及。 – sarnold

回答

3

不知道的是,delegate呼叫有定義all方法的副作用。

旁註:YARD (Yay! A Ruby Documentation Tool)是可編程的,可以很容易地進行擴展來推斷(如果它尚未)。

+0

我如何知道它是由委託宏定義的? – lampShade

+2

查看該文件中的第440行:class << self#類方法 441 **委託**:find,:first,:first !, last,:last!,**:all **,:exists? ,:any ?,:many ?,:to =>:scoped – daniel

+0

請參閱您在自己的問題中提到的源代碼行。它說:「委託......:全部......」 – qerub

2

因爲他們被委派。看看#441行。文檔處理器不執行代碼,因此不能很好地處理元編程。

相關問題