2012-04-26 144 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

相关问题