我试图在我的应用程序中使用railtie扩展一个特定的模型。添加类方法可以工作,但实例方法也不行。我有以下代码:
class Railtie
def self.insert
return unless defined?(::ActiveRecord)
::MyApp::MyModel.extend(ModelMethods)
end
end
module ModelMethods
def hello
puts "hello"
end
end
现在,我可以调用MyModel.hello
。但是,如果我想添加一些实例方法,我应该怎么做?当我试图通过::MyApp::MyModel.include(InstanceMethods)
添加它们时,它失败了,说调用私有方法。
include
是私有方法,不能有显式接收者。您可以使用send
:
MyModel.send(:include, InstanceMethods)