2010-09-07 42 views
1

我想通過一個模塊包括跨許多模型的自定義驗證,我看到一些奇怪的行爲。我寫了一個名爲validates_as_unique的自定義驗證,該驗證檢查數據庫中的記錄中是否有一組屬性是唯一的。在一個名爲FactBehaviors模塊我有:自定義驗證,包含在一個模塊中,將不會加載

module FactBehaviors 
    def self.included(base) 
    base.class_eval do 
     def self.acts_as_fact 
     extend ClassMethods 
     include InstanceMethods 
     end 
    end 
    end 

    module ClassMethods 
    ... 
    end 

    module InstanceMethods 
    def self.included(base) 
     if base.respond_to?(:validate_as_unique) 
     base.send(:validates_as_unique) 
     end 
    end 
    ... 
    end 
end 

當我火了控制檯和創造(的類型事實)一個新的,有效的記錄陌生感衆生然後創建另一個相同的記錄。驗證通過(無法正常工作)。但是,如果我重新加載!並嘗試再次創建相同的記錄,驗證工作並禁止我創建相同的記錄。

對於軌道加載類的方式,我還是有點模糊,但我覺得這種無知可能是這裏的問題。思考?

+0

你可以爲你的validates_as_unique驗證添加內容嗎?我相信現在已經有了一個確實的驗證。 – 2011-03-16 22:56:21

回答

0

你將不得不延長ActiveRecord的添加該模塊:

的ActiveRecord :: Base.extend(FactBehaviors)

使用它。

相關問題