【问题标题】:Run a helper method on a model class method在模型类方法上运行辅助方法
【发布时间】:2015-03-27 17:10:53
【问题描述】:

我创建了一个辅助方法,我想在模型类方法上运行它并得到一个方法未找到错误。

lib/model_helper

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

模型/foo

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

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

【问题讨论】:

  • 不要在模型中使用助手,这不是它们的用途。请改用关注点。
  • @BroiSatse 正确.. 正确。

标签: ruby-on-rails ruby activerecord module helper


【解决方案1】:

您必须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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多