1

我的用户可以选择使用图片网址或上传图片。两者之一是必需的。

我如何使用validates_presence_of :url“除非:image使用”。反之亦然。

我已经设法让它工作了;但显然这行不通。因为如果另一个不存在,它将添加验证。我对如何只输入两者中的一个感到困惑。

validates_presence_of       :url, if: Proc.new { |a| a.pictogram.blank? }
validates_presence_of       :pictogram, if: Proc.new { |a| a.url.blank? }

编辑: 我用

validate :addImageValidation

def addImageValidation
    if !url.blank? && !image.blank?
        errors.add(:image, "both not empty")
    end
end
4

1 回答 1

1

您可以编写自己的验证器:

validate :url_or_pictogram_but_not_both

def url_or_pictogram_but_not_both
  unless url ^ pictogram
    errors.add ...
  end
end
于 2013-11-11T12:05:24.210 回答