尝试在模型上创建验证。该模型有两个属性private_key
和public_key
。如果用户提供任何一个我想要验证以确保提供另一个。因此,如果他们提供public_key
,他们必须提供private_key
,反之亦然。现在我有以下内容:
validates_presence_of :public_key if :private_key?
validates_presence_of :private_key if :public_public?
出于某种原因,如果我不提供,我会收到错误。
提前致谢:)
答案 0 :(得分:2)
使用if
类似属性,而不是条件:
validates_presence_of :public_key, if: :private_key?
validates_presence_of :private_key, if: :public_public?
答案 1 :(得分:1)
这可能有效:
validates_presence_of :public_key, if: 'private_key?'
validates_presence_of :private_key, if: 'public_public?'
答案 2 :(得分:0)
您还可以使用验证快捷方式,如果需要,您可以在以后对同一属性进行多次验证:
validates :public_key, presence: true, if: Proc.new { |r| r.private_key.present? }
validates :private_key, presence: true, if: Proc.new { |r| r.public_key.present? }
我更愿意明确地测试属性的存在,例如使用public_key.present?而不是public_key?因为它更具可读性和AFAIK public_key?方法仅适用于布尔字段,除非您定义。