扩展模型的实例方法



我试图在我的应用程序中使用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)

相关内容

  • 没有找到相关文章

最新更新