validates_presence_of除非其他不为空

时间:2013-11-11 11:28:42

标签: ruby-on-rails ruby-on-rails-4

我的用户可以选择使用图片网址还是上传图片。但是其中一个是必需的。

如何使用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

1 个答案:

答案 0 :(得分:1)

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

validate :url_or_pictogram_but_not_both

def url_or_pictogram_but_not_both
  unless url ^ pictogram
    errors.add ...
  end
end