独特的对称对验证

时间:2016-03-07 12:33:33

标签: ruby-on-rails

我在ror中创建了一个脚手架,以便包含元素之间的某些关系

+----------------------+
| left | right | score |
+----------------------+

因此,如果我有一个条目a, b, 10,则表示从ab的关系是10.但是左右对应代表fk's我们可以得出结论:ba的关系也是10。

执行validates_uniqueness_of :left, :scope => [:right]之类的操作不会阻止该对显示在表格中,如下所示:b, a, 10

我想这样的事情:

validates_uniqueness_of :left, :scope => [:right]
validates_uniqueness_of :right, :scope => [:left]

可以做到这一点,但有没有更清晰或更合适的方法来对称地验证对的唯一性?

一旦得到答案,工作就差不多完成了。

如何阻止在两列上显示相同的值?

例如。不应允许此类条目:a, a, 15

感谢您的考虑。

1 个答案:

答案 0 :(得分:0)

可能会根据您的需求进行验证。我不知道。

如果没有,请考虑使用custom validation

class MyValidator < ActiveModel::Validator
  def validate(record)
    unless record.name.starts_with? 'X'
      record.errors[:name] << 'Need a name starting with X please!'
    end
  end
end

class Person
  include ActiveModel::Validations
  validates_with MyValidator
end