如果我做这样的事情:
class ActiveRecord::Base
def self.encrypt(*attr_names)
encrypter = Encrypter.new(attr_names)
before_save encrypter
after_save encrypter
after_find encrypter
define_method(:after_find) { }
end
end
require
?require
?答案 0 :(得分:5)
执行你正在尝试做的事情的轨道方式是:
在lib / encryptable.rb中创建一个文件(如果你在rails 4上,则为app / models / concerns),它用你的方法定义一个模块。
然后在您的模型中,您可以在初始化程序中执行include Encryptable
或(对于所有模型):
ActiveRecord::Base.class_eval do
include Encryptable
end
在此处阅读有关rails 4问题的更多信息:How to use concerns in Rails 4