2009-07-01 29 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