2012-01-21 92 views
0

所以我有一個非常簡單的方法,在這裏的模型:排除模塊使用的方法在多個模型

def log 
    self.statistics.build() 
    self.save 
    return 
    end 

現在我想排除這種方法爲一個模塊在不同的模型來使用它。

module Statistic 
    def log 
    self.statistics.build() 
    self.save 
    return 
    end 
end 

我將文件添加到自動加載路徑並將其包含到我的模型(包含工作正常)。

class Foo < ActiveRecord::Base 
    include Statistic 
end 

試圖調用.log方法導致一個錯誤: undefined method新」的統計:模塊the raised line number is the self.statistics.build()`線。

任何想法,爲什麼這不工作?

感謝您的所有提示!如果有不明之處,請留下評論。

回答

1

我認爲這是一個命名衝突。

看起來你有一個has_many :statistics,默認情況下這會尋找一個名爲Statistic的類。

但是這與您創建的模塊名稱相同。

我建議您將模塊重命名爲StatisticsExtensions或其他類似的東西。

+0

哦,是的,你說得對。任何用於命名文件和模塊的tipps? 'StatisticsExtensions'似乎不起作用,但有一些隨機名稱。該文件應該如何命名? 'statisticsExtensions'? – choise

+3

模塊'AbcDef'應該存放在名爲'abc_def.rb'的文件中,模塊'Ghi :: JklMno'應該是名爲'ghi'的子目錄中的文件名'jkl_mno.rb',即。 'ghi/jkl_mno.rb' –

+0

就像一個魅力。 – choise