如何验证Rails 3中缺少属性?

时间:2015-12-04 19:22:48

标签: ruby-on-rails ruby-on-rails-3

我想查看用户是否勾选了“matches_applicant_address”框 - 然后确保没有提交任何地址详细信息。

这适用于Rails4

validates  :address_line_1, :address_line_2,
:absence => true, :if => Proc.new{matches_applicant_address.present?}

有人知道如何在不使用缺席验证方法的情况下写出这个吗?

2 个答案:

答案 0 :(得分:3)

在Rails 3中,您可以使用validates_each指定自定义验证:

validates_each :address_line_1, :address_line_2, :if => Proc.new{ matches_applicant_address.present? } do |record, attr, value|
  record.errors.add(attr, "can't be present") unless value.blank?
end

答案 1 :(得分:1)

你可以做到

validate :address_lines_absent, if: Proc.new{ matches_applicant_address.present? }

def address_lines_absent
  errors.add :address_line_1 if address_line_1.present?
  errors.add :address_line_2 if address_line_2.present?
end

通过添加到errors数组,这将使模型无效。