我在lib /文件夹中有一个CommonFunctions模块。我有一个问题模型,其中包括CommonFunctions模块。现在我试图访问像Question.favorite这样的CommonFunctions的最喜欢的功能。但我得到NoMethodError。我已经包含了代码。任何人都可以告诉我我在做错误的地方
错误
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?
的副本答案 0 :(得分:2)
您的代码是正确的。确保在控制台中加载了当前版本的类(尝试reload!
)。
作为旁注:如果将CommonFunctions.rb重命名为common_functions.rb,它将由rails自动加载,您不需要。
答案 1 :(得分:1)
当您希望模块方法成为类方法时,它是一个实例方法。请改用以下代码
module CommonFunctions
def self.favorite(object_id)
end
end
使用“self”一词将方法定义为类方法(或静态)