2013-12-17 14 views
0

不同勢模塊所以我有一個問題:Rails的模塊 - 包括在測試過程中

我有我的課:

class User < ActiveRecord::Base 
    after_initalize :include_proper_module 

    private 
    def include_proper_module 
    if variable1 = 1 
     self.class.send(:include, Module1) 
    else 
     self.class.send(:include, Module2) 
    end 
    end 
end 

,它工作正常,直到我跑了所有的測試 - 那麼,如果測試的一個包括Module1,然後始終包含它。

我使用database_cleaner刪除策略,並沒有任何想法在哪裏或如何調試它。測試之後/之前是否有任何選項可以重置所有包含的模塊?

回答

2

無論測試結果如何,代碼都是錯誤的。事實上,包含模塊會影響整個類的定義。

根據實例變量有條件地包含模塊沒有意義。一旦變量爲1,Module1就會混入類的每個用戶實例中。一旦變量不等於1,Module2將被混合到用戶類中,每個用戶

結果是每個用戶實例都會快速包含這兩個模塊。

我相信這是測試揭示的內容。我不確定你想要完成什麼,但那不是正確的方法。

+0

哦,我看到了,沒有想過這個,當我爲課程添加模塊時,它影響了該類的已存在對象 - 而且它很明顯。謝謝! –