我正在使用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