2010-07-26 9 views
5

Quería agregar un método a dos modelos, así que hice un módulo como este y lo incluí en ambos modelos.¿Puede incluir filtros antes/después en un Módulo Rails?

module UserReputation 
    def check_something 
    ... 
    end 
end 

Eso funcionó bien. Entonces quería que ese método se llamara como: after_create en todos esos modelos. Funciona si lo agrego manualmente para todos los modelos, pero quería ser inteligente y lo incluye en el módulo de la siguiente manera:

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

Pero esto no funciona. ¿Hay alguna manera de lograr esto y SECAR el after_create también?

Respuesta

10

Trate self.included, que se llama cuando el módulo se mezcla en la clase base:

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

usted gobierna, gracias! –

+0

Además, solo para seguir, parece que te falta una 'def' delante de' self.included (base) ', pero de lo contrario, funciona muy bien. ¡Gracias! –

+0

Reparado. ¡De nada! – giraff

Cuestiones relacionadas