2010-07-26 40 views
5

我想爲兩個模型添加一個方法,所以我製作了一個這樣的模塊,並將它包含在兩個模型中。你可以在Rails模塊中包含過濾器之前/之後嗎?

module UserReputation 
    def check_something 
    ... 
    end 
end 

工作正常。然後,我想要在所有這些模型上將該方法稱爲:after_create。它的工作原理,如果我手動將其添加到所有的車型,但我想是聰明的,包括它的模塊中是這樣的:

module UserReputation 
    after_create :check_something 
    def check_something 
    ... 
    end 
end 

但是,這是行不通的。有沒有什麼辦法可以實現這一點,並幹掉after_create?

回答

10

嘗試self.included,當模塊混入類base被稱爲:

module UserReputation 
    def self.included(base) 
    base.after_create :check_something 
    end 
end 
+0

你治,謝謝! – 2010-07-27 07:12:59

+0

另外,僅僅爲了跟進,它看起來像是在'self.included(base)'前面缺少了一個'def',但是除此之外這很好。謝謝! – 2010-07-27 17:51:52

+0

固定。別客氣! – giraff 2010-07-30 17:42:59

相關問題