0

newモデルのメソッドのソースを見つけようとしています。source_locationActiveRecord::Base.new と Widget.new (Widget はモデル) で使用しようとしましたが、

find . -name *rb -exec grep -il "def new$" {} \;

Activerecord gem ディレクトリ内にありましたが、うまくいきませんでした。

4

1 に答える 1

0

Ruby オブジェクトが を介してインスタンス化される.newと、通常はオブジェクトのinitializeメソッドが実行されます。Classこれはデフォルトで次のように定義されています。

1.9.3p327 :002 > ActiveRecord::Base.method(:new)
=> #<Method: Class#new>

Rails モデルのカスタム初期化子を作成する場合は、initializeメソッドを定義するだけです。initializeは常に ActiveRecord によって呼び出されるとは限らないため、これにはいくつかの注意点があることに注意してください。代わりにafter_initializeコールバックを追加した方がよい場合があります。

実行時にメソッドが定義されている場所を見つける方法を参照してください。そしてRubyでは、「新規」と「初期化」の関係は何ですか? 初期化中にnilを返す方法は? メソッドが定義されている場所と、newinitializeがどのように関連しているかを見つけるための役立つ情報については、 を参照してください。

于 2013-03-12T23:44:54.040 に答える