2010-06-26 108 views
0

我在lib /文件夾中有一個CommonFunctions模塊。我有一個問題模型,其中包括CommonFunctions模塊。現在我試圖訪問CommonFunctions喜歡的函數,如Question.favorite。但是我得到了NoMethodError。我已經包含了代碼。誰能告訴我在哪裏,我做了錯誤Ruby模塊包含問題

錯誤

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

裏面的lib/CommonFunctions.rb

module CommonFunctions 
    def favorite(object_id) 
    end 
end 

內部應用程序/模型/ 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

您的代碼重複是正確的。確保您擁有在控制檯中加載的類的當前版本(請嘗試reload!)。

作爲旁註:如果您將CommonFunctions.rb重命名爲common_functions.rb,它將被rails自動加載,並且您不需要require。

+0

非常感謝你:) – felix 2010-06-26 21:31:08

1

當你希望它是一個類方法時,模塊方法是一種實例方法。使用下面代替

module CommonFunctions 
    def self.favorite(object_id) 
    end 
end 

代碼用的是「自我」的定義方法,一個類的方法(或靜態)