2009-07-01 5 views
8

Hier ist eine Klasse, die ich verwendet habe, umEinschließlich Module in einer Klasse und Ausführung von Code

class Something 
    # Defines the validates class methods, which is called upon instantiation 
    include Module 

    validates :name 
    validates :date 

end 

ich jetzt mehrere Objekte, die die gleichen Funktionen verwenden, und schlimmer noch, mehrere Objekt, die ähnliche Dinge definieren, wie folgt aus:

class Anotherthing 
    # Defines the validates class methods, which is called upon instantiation 
    include Module 

    validates :age 

end 

ich möchte ‚Wiederverwendung‘ der Inhalt dieser Klassen, so drehte ich sie in Module:

module Something 
    # Defines the validates class methods which is called upon instantiation 
    include Module 

    validates :name 
    validates :date 

end 

module Anotherthing 
    # Defines the validates class methods which is called upon instantiation 
    include Module 

    validates :age 

end 

Und ich kann nun eine Klasse

class ADualClass 
    include Something 
    include Anotherthing 
end 

Das Problem erstellen, die ich habe, ist, dass die Methode validiert werden nicht genannt, wenn ich ein ADualClass Objekt erstellen ... Es scheint, dass die „bestätigt: Ding“ wird nie genannt. Warum das? Wie kann ich das erzwingen?

Antwort

14

In Ihrem Modul müssen Sie z.

def self.included(base) 
    base.validates :name 
    base.validates :date 
end 
Verwandte Themen