2012-04-26 153 views
9

我有一個自定義驗證程序,我試圖在失敗時輸出錯誤消息,但無法執行此操作。有人可以告訴我,如果我在正確的地方做這件事。將錯誤消息添加到自定義驗證程序

class User < ActiveRecord::Base 
    self.table_name = "user" 

    attr_accessible :name, :ip, :printer_port, :scanner_port 

    validates :name,  :presence => true, 
          :length => { :maximum => 75 }, 
          :uniqueness => true       

    validates :ip,   :length => { :maximum => 75 }, 
          :allow_nil => true  

    validates :printer_port, :presence => true, :if => :has_association? 

    validates :scanner_port, :presence => true, :if => :has_association?   

    def has_association? 
    ip != nil 
    end 
end 

我是有如下:

validates :printer_port, :presence => true, :message => "can't be blank", :if => :has_wfm_association? 

但收到錯誤

Unknown validator: 'MessageValidator' 

,當我試圖把消息在驗證結束逗號分離該has_association?打開問號和逗號橙色

回答

17

messageif參數應該是一個散列裏面的presence

validates :printer_port, :presence => {:message => "can't be blank", :if => :has_wfm_association?} 

這是因爲你可以在一行加載多個驗證:

validates :foo, :presence => true, :uniqueness => true 

如果您嘗試按照您的方式添加消息或者添加條件,則Rails將不知道應用消息/條件的驗證。因此,您需要設置每次驗證的消息:

validates :foo, :presence => {:message => "must be present"}, 
       :uniqueness => {:message => "must be unique"} 
+0

我是否需要在存在時包含true語句?當我這樣做的時候?和散列的結尾一起運行,並且都變成橙色。 – Jay 2012-04-26 14:59:38

+0

只需要把空間,感謝您的幫助迪蘭非常感謝:) – Jay 2012-04-26 15:38:05

+0

我該如何接受? – Jay 2012-05-01 10:11:33

相關問題