Ruby模块包含问题

时间:2010-06-26 20:18:37

标签: ruby-on-rails ruby module

我在lib /文件夹中有一个CommonFunctions模块。我有一个问题模型,其中包括CommonFunctions模块。现在我试图访问像Question.favorite这样的CommonFunctions的最喜欢的功能。但我得到NoM​​ethodError。我已经包含了代码。任何人都可以告诉我我在做错误的地方

错误

NoMethodError: undefined method `favorite' for Class:0x00000100e11508

在lib / CommonFunctions.rb内部

module CommonFunctions
  def favorite(object_id)
  end
end

内部app / models / Question.rb

require 'lib/CommonFunctions.rb'
class Question
  extend CommonFunctions
end

我正在从脚本/控制台执行以下代码

   Question.favorite(1)

谢谢


这是How do I properly include a module and call module functions from my Rails model?

的副本

2 个答案:

答案 0 :(得分:2)

您的代码是正确的。确保在控制台中加载了当前版本的类(尝试reload!)。

作为旁注:如果将CommonFunctions.rb重命名为common_functions.rb,它将由rails自动加载,您不需要。

答案 1 :(得分:1)

当您希望模块方法成为类方法时,它是一个实例方法。请改用以下代码

module CommonFunctions   
  def self.favorite(object_id)   
  end 
end

使用“self”一词将方法定义为类方法(或静态)