在模型类方法上运行辅助方法

xer*_*gun 3 ruby activerecord module ruby-on-rails helper

我创建了一个帮助器方法,我想在模型类方法上运行并获取一个找不到方法的错误.

LIB/model_helper

module ModelHelper
  def method_i_want_to_use
    puts "I want to use this method"
  end
end
Run Code Online (Sandbox Code Playgroud)

模型/富

    class Foo < ActiveRecord::Base
    include ModelHelper
    def self.bar
      method_i_want_to_use
    end
end
Run Code Online (Sandbox Code Playgroud)

此设置为我提供了无方法错误.

Aru*_*hit 7

你必须extend使用模块而不是include.

extend ModelHelper
Run Code Online (Sandbox Code Playgroud)

include使方法可用作实例方法Foo.这意味着,您可以method_i_want_to_use在实例上调用该方法Foo,而不是在Foo其自身上调用.如果你想自己打电话Foo,那就用吧extend.

module ModelHelper
  def method_i_want_to_use
    puts "I want to use this method"
  end
end

class Foo
  extend ModelHelper

  def self.bar
    method_i_want_to_use
  end
end

Foo.bar
# >> I want to use this method
Run Code Online (Sandbox Code Playgroud)