我有一个包含10个属性的表单。
其中我有4个属性,我需要应用我称之为“互为条件存在”的Active Record验证。 这些属性是
这意味着如果用户填写其中一个,那么所有其他人必须在场
到目前为止,我只能说,如果用户填写第一个属性“地址行1”,那么所有其他属性必须存在。
但它没有验证所有可能组合中的所有MUTUAL存在。例如,如果用户让“地址行1”为空但填充了zipcode并将其他三个留空,我希望活动的不再验证表单,因为他应该被要求填写其他三个属性。等等每个属性。
怎么做?
这是我当前的代码
规格/模型/用户
validates :address_line_1,
presence: true,
length: { maximum: 100,
minimum: 3 }
validates :zipcode,
presence: true, if: :address_line_1?,
length: { maximum: 20,
minimum: 4}
validates :state,
presence: true, if: :address_line_1?,
validates :country,
presence: true, :address_line_1?,
length: { maximum: 50}
答案 0 :(得分:6)
只需检查其中一个填写的字段即可替换:address_line?
条件:
validates :address_line_1,
presence: true, if: :address_entered?,
length: { maximum: 100,
minimum: 3 }
validates :zipcode,
presence: true, if: :address_entered?,
length: { maximum: 20,
minimum: 4
validates :state,
presence: true, if: :address_entered?,
validates :country,
presence: true, if: :address_entered?,
length: { maximum: 50}
def address_entered?
address_line_1.present? || zipcode.present? || state.present? || country.present?
end