2009-07-01 10 views
8

क्रियान्वित यहां कक्षा कि मैं किया करते थे हैएक वर्ग में मॉड्यूल शामिल करना और कोड

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

    validates :name 
    validates :date 

end 

मैं अब कई वस्तुओं है कि एक ही कार्य का उपयोग कर रहे हैं, और भी बदतर, कई वस्तु इसी तरह की बातों को परिभाषित कर रहे हैं कि, इस तरह:

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

    validates :age 

end 

मैं चाहता हूँ करने के लिए 'फिर से उपयोग' इन कक्षाओं की सामग्री, तो मैं उन्हें मॉड्यूल में बदल गया:

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 

और अब मैं ... एक वर्ग

class ADualClass 
    include Something 
    include Anotherthing 
end 

समस्या यह है कि मैं इस बात को मान्य विधि कहा जाता है नहीं कर रहे हैं जब मैं एक ADualClass वस्तु बनाने है बना सकते हैं ऐसा लगता है कि "सत्यापन करती है: बात" कभी नहीं कहा जाता है। ऐसा क्यों है? मैं इसे कैसे मजबूर कर सकता हूं?

उत्तर

14

आपके मॉड्यूल में आपको परिभाषित करने की आवश्यकता है, उदा।

def self.included(base) 
    base.validates :name 
    base.validates :date 
end 
संबंधित मुद्दे