Rails验证一个值不等于另一个值

Mel*_*emi 6 validation ruby-on-rails ruby-on-rails-3

有没有办法在保存记录之前验证一个text_field不等于另一个?我有两个带有整数的text_fields,它们不能相同,因为记录无效.

Sha*_*ell 9

您可以添加自定义验证:

class Something
  validate :fields_a_and_b_are_different

  def fields_a_and_b_are_different
    if self.a == self.b
      errors.add(:a, 'must be different to b')
      errors.add(:b, 'must be different to a')
    end
  end
Run Code Online (Sandbox Code Playgroud)

每次验证对象时(无论是显式还是使用验证保存)都会调用它,并且会向两个字段添加错误.您可能希望在两个字段上都有错误,以便在表单中以不同方式呈现它们.

否则你只能添加一个基本错误:

errors.add(:base, 'a must be different to b')
Run Code Online (Sandbox Code Playgroud)


Ver*_*cus 5

在你的模型中:

validate :text_fields_are_not_equal

def text_fields_are_not_equal
  self.errors.add(:base, 'Text_field1 and text_field2 cannot be equal.') if self.text_field1 == self.text_field2
end
Run Code Online (Sandbox Code Playgroud)