我有一个自定义验证器,并且尝试输出错误消息但无法执行时,我尝试这样做。有人可以告诉我我是否在正确的地方进行此操作。
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吗?将问号和逗号变成橙色
最佳答案
message
和if
参数应该在presence
的散列中:
validates :printer_port, :presence => {:message => "can't be blank", :if => :has_wfm_association?}
这是因为您可以在一行中加载多个验证:
validates :foo, :presence => true, :uniqueness => true
如果您尝试以这种方式或
if
条件向其中添加消息,Rails将不知道将消息/条件应用于哪个验证。因此,您需要设置每个验证的消息:validates :foo, :presence => {:message => "must be present"},
:uniqueness => {:message => "must be unique"}
关于ruby-on-rails-3 - 向自定义验证器添加错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10335438/