我正在使用mixin爲我的模型(Person)添加一些功能。在mixin中我需要做一些初始化,所以我試圖使用「after_initialize」回調宏來調用一個初始化方法。模型(Person)只是其他一些模型的基類。after_initialize從未在Rails 3中通過mixin調用
我遇到的問題是它永遠不會被調用。我試圖調試它,但斷點從未被擊中。同時日誌記錄也沒有輸出。
我找不到任何幫助(因爲這個構造應該在Rails 3中根據Api文檔和一些帖子在這裏工作)。
/lib/mymodule.rb
module MyModule
after_initialize :generate_ids
def generate_ids
logger.info "invoked" #never hit
end
end
/models/person.rb
require "mymodule"
class Person < ActiveRecord::Base
include MyModule
end
/models/customer.rb
class Customer < Person
# nothing so far
end
* /控制器/ customers_controller.rb(動作=>新)*
# GET /customers/new
# GET /customers/new.json
def new
@person = Customer.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @customer }
end
end
請縱容我,因爲我是個 「新手」,以回報率。
非常感謝!
最好的問候, 托馬斯
UPDATE
重新啓動它給了我下面的異常的本地應用程序服務器後:
的ActionController :: RoutingError(未定義的方法`after_initialize」爲SequentialRecord:Module):
我認爲這個回調函數不能用在mixins中嗎?
您好!非常感謝你,這就是它! ;-) – Thomas233 2012-04-13 17:53:48