Использование одного и того же типа проверки несколько раз в одном поле - PullRequest
1 голос
/ 28 октября 2011

Я хочу использовать один и тот же тип проверки (но с разными опциями на основе условия) для одного и того же поля несколько раз, как в примере ниже:

validates :something, :length => { :minimum => 1, :if => :some_condition1 }
validates :something, :length => { :minimum => 2, :maximum => 20, :if => :some_condition2 }
validates :something, :length => { :minimum => 10, :unless => :some_condition3 }

Но такой способ не будет работать правильно, поскольку будет применяться только последняя проверка.Есть ли другой способ сделать такую ​​вещь?

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Правильный синтаксис:

validates :something, :length => { :minimum => 1 }, :if => :some_condition1
validates :something, :length => { :minimum => 2, :maximum => 20 }, :if => :some_condition2
validates :something, :length => { :minimum => 10 }, :unless => :some_condition3

Возьмите условия вне опций длины.

Также вы можете взглянуть на Условные проверки для получения дополнительной информации

0 голосов
/ 28 октября 2011
validate :length_of_something


def length_of_something
  length = self.something.length
  valid = case
  when some_condition1
    lengh >= 1
  when some_condition2
    length >= 2 && length <= 20
  when some_condition3
    length > 10
  end
  errors.add(:something, :invalid) unless valid
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...