2011-02-05 68 views
18

UPDATE如何在Rails 3中使用'after_initialize'?

我錯誤地檢查了edgerails引導,而不是目前的Rails正確引導3(沒有提及after_initialize的)。不知道爲什麼edgerails指南是「不正確的」,但我認爲edgerails指南應該是最新的最新指南?

我就這樣離開這個問題,以防萬一有人來尋找相同的「問題」。

宏調式呼叫after_initialize是要走的路。



應該after_initialize被用作方法或宏風格的電話嗎?

這工作,但給出了一個棄用警告:

def after_initialize 
    logger.info "Called after_initialize" 
end 

棄用警告:基地#after_initialize已被棄用, 請用Base.after_initialize:方法來代替。

這工作,並沒有警告:

after_initialize :do_this_after_initialize 
def do_this_after_initialize 
    logger.info "Called after_initialize" 
end 

活動記錄驗證和回調指南10.4 after_initialize and after_find說:

...如果您嘗試註冊 after_initialize或者使用 宏觀式的類方法after_find,他們將 只是被忽略。此行爲是 由於性能方面的原因,因爲 after_initialize和after_find將 都被稱爲爲每個記錄在數據庫中找到 ,顯著放緩 下來查詢...

所以這意味着宏觀風格的用法與方法風格的方式相比效率低下?

(我導向是錯誤的,「COS代碼爲王:d)


另一個更新


從2011年1月28日,一個commit here,表明正確的方法仍然使用宏觀式呼叫,而不是def after_initialize

+3

我使用after_initialize例如用於builings關聯。例如after_initialize:build_text,:unless =>:text。使用accept_nested_attributes_for時非常有幫助 – 2011-02-05 18:21:44

回答

相關問題