ruby-on-rails-3 - 向自定义验证器添加错误消息

标签 ruby-on-rails-3 rspec2 customvalidator custom-errors

我有一个自定义验证器,并且尝试输出错误消息但无法执行时,我尝试这样做。有人可以告诉我我是否在正确的地方进行此操作。

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吗?将问号和逗号变成橙色

最佳答案

messageif参数应该在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/

相关文章:

ruby-on-rails - 在 Rails 3 中运行后台作业

ruby-on-rails - 检查记录是否由 Rails 中的当前用户拥有的辅助方法

ruby - 无法让 capybara-webkit 工作

ruby-on-rails-3 - 在创建新的 Rails 应用程序时,如何告诉 Rails 使用 RSpec 而不是测试单元?

jquery - Asp.net 自定义验证器

asp.net - 使CustomValidator与ValidationSummary消息框配合使用的优雅方法

ruby-on-rails - 我的 rails 路径及其路由出现奇怪的问题

css - 对于使用 f.text_field 创建的字段,不使用 field_with_errors 包装 css div 但适用于 f.input

ruby-on-rails-3 - 如何测试 - 使用 rspec - 创建电子邮件时使用什么模板? (导轨 3.0.7)

php - Laravel 自定义验证器返回页面而不是 json