2011-12-18 1 views
0

メソッドがActiveRecord::Baseに定義されているのは、documentationに記載されていないのはなぜですか?それはdelegate「マクロ」とドキュメントジェネレータによって定義されていますのでActiveRecord :: Baseで定義されているallメソッドがドキュメントに記載されていないのはなぜですか?

["/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コールが持っていることを認識していない:

は、私はそれが私がPost.method(:all).source_locationを実行し、この出力を得たので、ここで定義されている知っていますallメソッドを定義する副作用。

サイドノート:YARD (Yay! A Ruby Documentation Tool)はプログラム可能であり、これを推論するために容易に拡張することができます(まだない場合)。

+0

デリゲートマクロによって定義されていることを確認するにはどうすればよいですか? – lampShade

+2

そのファイルの440行目を見てください:class << self#クラスメソッド 441 ** delegate **:find、:first、:first !,:last、:last !, **:all **、:exists? 、:any ?,:many ?,:to =>:スコープ – daniel

+0

あなた自身の質問で言及したソースコード行を見てください。それは言う: 'デリゲート...:すべて、...' – qerub

2

彼らは委任されているためです。ライン#441を見てください。ドキュメントプロセッサはコードを実行しないため、メタプログラミングをうまく処理できません。

関連する問題