如何验证 Rails 3 中缺少属性?
How to validate the absence of attributes in Rails 3?
我想查看用户是否勾选了 "matches_applicant_address" 框 - 然后确保没有提交任何地址详细信息。
这适用于 Rails4
validates :address_line_1, :address_line_2,
:absence => true, :if => Proc.new{matches_applicant_address.present?}
有谁知道我怎么可能不使用缺席验证方法就写这个?
你可以做到
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
这将通过添加到错误数组使模型无效。
在Rails3中可以使用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
我想查看用户是否勾选了 "matches_applicant_address" 框 - 然后确保没有提交任何地址详细信息。
这适用于 Rails4
validates :address_line_1, :address_line_2,
:absence => true, :if => Proc.new{matches_applicant_address.present?}
有谁知道我怎么可能不使用缺席验证方法就写这个?
你可以做到
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
这将通过添加到错误数组使模型无效。
在Rails3中可以使用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