Есть ли в Rails 3 ярлык для проверки поля только при его наличии? - PullRequest
3 голосов
/ 08 мая 2011

Я обнаружил, что делаю это:

validates_numericality_of :mileage,:if => Proc.new {|car| car.mileage.present? }

Иногда поле миль не может быть отправлено, но когда оно есть, я хочу, чтобы оно было проверено. У меня нет проблем с наличием Proc внутри моего кода, но это код, который я как бы дублирую для всех других необязательных полей. Есть ли ярлык типа :if => present?? Я использую Rails 3.0.5.

Ответы [ 2 ]

8 голосов
/ 08 мая 2011

Извлечение : allow_nil

: allow_nil - если установлено значение true, пропускает эту проверку, если атрибут равен nil (по умолчанию false).

Согласно документации API, пустые строки перед проверкой преобразуются в nils, поэтому это должно работать в любом случае.

1 голос
/ 08 мая 2011

Вы можете использовать хук before_validation для преобразования пустых строк в nil, а затем использовать опцию :allow_nil в validates_numericality_of:

before_validation :clean_up_milage # This would replace '' with nil
validates_numericality_of :milage, :allow_nil => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...