new
モデルのメソッドのソースを見つけようとしています。source_location
ActiveRecord::Base.new と Widget.new (Widget はモデル) で使用しようとしましたが、
find . -name *rb -exec grep -il "def new$" {} \;
Activerecord gem ディレクトリ内にありましたが、うまくいきませんでした。
new
モデルのメソッドのソースを見つけようとしています。source_location
ActiveRecord::Base.new と Widget.new (Widget はモデル) で使用しようとしましたが、
find . -name *rb -exec grep -il "def new$" {} \;
Activerecord gem ディレクトリ内にありましたが、うまくいきませんでした。
Ruby オブジェクトが を介してインスタンス化される.new
と、通常はオブジェクトのinitialize
メソッドが実行されます。Class
これはデフォルトで次のように定義されています。
1.9.3p327 :002 > ActiveRecord::Base.method(:new)
=> #<Method: Class#new>
Rails モデルのカスタム初期化子を作成する場合は、initialize
メソッドを定義するだけです。initialize
は常に ActiveRecord によって呼び出されるとは限らないため、これにはいくつかの注意点があることに注意してください。代わりにafter_initializeコールバックを追加した方がよい場合があります。
実行時にメソッドが定義されている場所を見つける方法を参照してください。そしてRubyでは、「新規」と「初期化」の関係は何ですか? 初期化中にnilを返す方法は? メソッドが定義されている場所と、new
とinitialize
がどのように関連しているかを見つけるための役立つ情報については、 を参照してください。