2009-07-01 10 views
8

Đây là một lớp mà tôi đã từng cóBao gồm các module trong một lớp học và thực thi mã

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

    validates :name 
    validates :date 

end 

tôi bây giờ có một số đối tượng đang sử dụng các chức năng tương tự, và tồi tệ hơn, một số đối tượng được xác định những điều tương tự, như thế này:

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

    validates :age 

end 

tôi muốn 'tái sử dụng' nội dung của các lớp này, vì vậy tôi biến chúng thành các 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 

Và tôi bây giờ có thể tạo ra một lớp

class ADualClass 
    include Something 
    include Anotherthing 
end 

Vấn đề mà tôi có là phương pháp xác nhận không được gọi khi tôi tạo một đối tượng ADualClass ... Có vẻ như rằng "xác nhận: điều" không bao giờ được gọi. Tại sao vậy? Làm thế nào tôi có thể ép buộc điều này?

Trả lời

14

Trong mô-đun của bạn, bạn cần xác định, ví dụ:

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