2011-09-16 19 views
49

Bir modülde before_save geri arama tanımlamak mümkün mü? BöyleBir modülde 'before_save' geri çağrısı tanımlamak mümkün mü?

class Model 
    include MongoMapper::Document 
    include MyModule 
end 

ve bir modül: herhangi Model nesneler kaydedilmeden önce

module MyModule 
    before_save :do_something 

    def do_something 
    #do whatever 
    end 
end 

do_something adı verilecek böyle bir sınıfla bu tür? Bunu böyle denedim ama undefined method 'before_save' for MyModule:Module olsun.

Basit bir şeyse özür dilerim - Ruby'ye ve Rails'e yeniyim.

cevap

95

< 3 (Raylar olmayan özellikleri sadece Yakut)> 3 (Raylar ile Concern özelliği) Raylar Ruby

module MyModule 
    def self.included(base) 
    base.class_eval do 
     before_save :do_something 
    end 
    end 

    def do_something 
    #do whatever 
    end 
end 

module MyModule 
    extend ActiveSupport::Concern 

    included do 
    before_save :do_something 
    end 

    def do_something 
    #do whatever 
    end 
end 
+1

Mükemmel çalışır - teşekkürler! – Russell

+0

Rails <3 için yaklaşım Rails> = 3'te çalışmaz mı? Bunu yapıyorum ve 'before_validation' geri aramamın çağrılmadığı görülüyor. – Bradley

+0

Aynı zamanda işe yarayacak. –

İlgili konular