未知的验证者:' AbsenceValidator' (引发ArgumentError)

时间:2014-03-31 09:46:59

标签: ruby-on-rails ruby

请帮我解决问题 我添加了:检查属性到我的Person模型。然后我添加了验证。这是:

validates :check, :absence => true

之后它停止了工作,我得到了这个:

Unknown validator: 'AbsenceValidator' (ArgumentError)

根据这篇文章它应该工作 http://guides.rubyonrails.org/active_record_validations.html#absence

但事实并非如此。

任何想法如何解决?

提前多多感谢!

3 个答案:

答案 0 :(得分:1)

在Rails 3中尝试以下代码。

validate :check_is_absent

def check_is_absent
  errors.add(:check, "check is present") if check.present?
end

presence验证器助手使用blank?确定属性的存在,absence助手使用present?来确定属性的缺失。

答案 1 :(得分:1)

validates_absence_of :column_name, absence: true / validates_absence_of :column_name在Rails 3.2上只是......缺席。

相反,您可以使用custom validation block

validate(:check) { errors.add(:check, :absence) if check.present? }

额外奖励:您可以配置您的语言区域(f.e。config/locales/en.yml),以便为:absence错误获取相同的消息:

en:
  activerecord:
    errors:
      messages:
        absence: "must be blank"

答案 2 :(得分:0)

如果有人仍在乎。前段时间我为rails 3.2创建了这个:

https://github.com/robotex82/rails_tools-absence_validator

或者将它添加到你的gemfile中:

gem install rails_tools-absence_validator

并在轨道4中使用它。