我正在使用 mixin 为我的模型(Person)添加一些功能。在 mixin 中,我需要进行一些初始化,因此我尝试使用“after_initialize”回调宏来调用初始化方法。模型(Person)只是其他一些模型的基类。
我遇到的问题是它永远不会被调用。我试图调试它,但断点从未被击中。日志记录也没有给我任何输出。
我找不到任何帮助(因为根据 Api 文档和这里的一些帖子,这个结构应该在 Rails 3 中工作)。
/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
*/controllers/customers_controller.rb (action => new)*
# 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
请放纵我,因为我是 RoR 的“新手”。
非常感谢你 !
最好的问候,托马斯
更新
重新启动本地应用服务器后,它给了我以下异常:
ActionController::RoutingError(SequentialRecord:Module 的未定义方法 `after_initialize'):
我假设这个回调不能在 mixins 中使用?