Rails 4验证存在条件“风格”

时间:2014-07-05 16:54:35

标签: ruby-on-rails-4

我正试图干这一点,但无法弄清楚语法可能是什么。我有两个字段,我想有条件地验证存在:链接和文本。如果另一个不是#present ?,则每个都应该要求存在,但如果另一个是#present,则需要缺席?

这是我能得到它的最短时间,让每个领域分成两部分感觉很蠢。

validates :link,
        presence: true,
        unless: "text.present?",
validates_absence_of :link, if: "text.present?"

validates :text,
        presence: true,
        unless: "link.present?"
validates_absence_of :text, if: "link.present?"

其他人可以帮助n00b让它更干净吗?

提前致谢。

找到解决方案

我最后在here的帮助下使用了以下解决方案。

validate :either_or

private

  def either_or
    if !(link.blank? ^ text.blank?)
      errors[:base] << "Specify a link or text, but not both."
    end
  end

1 个答案:

答案 0 :(得分:0)

回答我自己的问题;)

我最后在here的帮助下使用了以下解决方案。

validate :either_or

private

  def either_or
    if !(link.blank? ^ text.blank?)
      errors[:base] << "Specify a link or text, but not both."
    end
  end