运行 模型上的辅助方法 class 方法

Run a helper method on a model class method

我创建了一个我想 运行 在模型 class 方法上使用的辅助方法,但出现找不到方法的错误。

lib/model_helper

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

model/foo

    class Foo < ActiveRecord::Base
    include ModelHelper
    def self.bar
      method_i_want_to_use
    end
end

这个设置给我一个无方法错误。

您必须 extend 模块而不是 include

extend ModelHelper

include 使这些方法可用作 Foo 的实例方法。这意味着,您可以在 Foo 的实例上调用方法 method_i_want_to_use,而不是在 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