我正在試圖找到模型'new
方法的來源。我試圖用source_location
用ActiveRecord :: Base.new,並與Widget.new(其中Widget是一個模型),並做定義Model.new方法在哪裏?
find . -name *rb -exec grep -il "def new$" {} \;
ActiveRecord的寶石目錄內,但沒有運氣。
我正在試圖找到模型'new
方法的來源。我試圖用source_location
用ActiveRecord :: Base.new,並與Widget.new(其中Widget是一個模型),並做定義Model.new方法在哪裏?
find . -name *rb -exec grep -il "def new$" {} \;
ActiveRecord的寶石目錄內,但沒有運氣。
當Ruby對象通過.new
實例化時,它通常運行對象的initialize
方法。這是默認的Class
定義:
1.9.3p327 :002 > ActiveRecord::Base.method(:new)
=> #<Method: Class#new>
如果你想創建一個Rails的模型的自定義初始化,簡單地定義一個initialize
方法。請注意,有一些注意事項,因爲initialize
不一定總是由ActiveRecord調用。相反,您最好添加一個after_initialize回調。
請參閱How to find where a method is defined at runtime?和In Ruby, what's the relationship between 'new' and 'initialize'? How to return nil while initializing?瞭解關於查找方法的定義以及如何與new
和initialize
相關的更多幫助信息。
謝謝!你能不能也請告訴我Model.save在哪裏或如何找到它? – highBandWidth 2013-03-13 00:00:58
'new'方法是構造函數,在任何情況下你都應該在尋找'ActiveRecord :: Base'的'initialize'方法 – sergelerator 2013-03-12 23:41:16