Проверка Rails, что одно значение не равно другому - PullRequest
6 голосов
/ 23 февраля 2012

Есть ли способ проверить, что одно текстовое поле не равно другому перед сохранением записи?У меня есть два text_fields с целыми числами в них, и они не могут быть идентичными, чтобы запись была действительной.

Ответы [ 2 ]

9 голосов
/ 24 февраля 2012

Вы можете добавить пользовательскую проверку:

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

Она будет вызываться каждый раз, когда проверяется ваш объект (либо явно, либо при сохранении с проверкой), и добавит ошибку в оба поля.Возможно, вы захотите, чтобы ошибка в обоих полях отображалась по-разному в форме.

В противном случае вы можете просто добавить базовую ошибку:

errors.add(:base, 'a must be different to b')
5 голосов
/ 23 февраля 2012

В вашей модели:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...