如果我做这样的事情:
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
? 最佳答案
做你想做的事情的rails-ish方式是:
在 lib/encryptable.rb (或 app/models/concerns,如果你在 rails 4 上)创建一个文件,它用你的方法定义一个模块。
然后在你的模型中你可以做
include Encryptable
或(对于所有模型)在初始化程序中:ActiveRecord::Base.class_eval do
include Encryptable
end
在此处阅读有关 rails 4 问题的更多信息:How to use concerns in Rails 4
关于ruby-on-rails - 扩展 ActiveRecord::Base,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451487/