2009-10-20 4 views
4

В модели ActiveRecord считается наилучшей практикой/необходимо использовать validates_presence_of, когда также используется validates_length_of?Требуется ли validates_presence_of, если используется validates_length_of?

Например:

class Company < ActiveRecord::Base 
    validates_presence_of :name 
    validates_length_of :name, :in => 5..30 
end 

Для меня это кажется излишним. Длина от 5 до 30 означает, что атрибут также присутствует, но я вижу, что это используется везде. Это также означает, что пользователи получают два сообщения об ошибках относительно одного и того же отсутствующего атрибута, когда действительно требуется только один.

Я что-то упускаю, или люди чрезмерно усердны при проверке данных?

ответ

7

validates_presence_of является полностью избыточным при использовании с validates_length_of, за исключением случаев, когда вы поставляете :allow_nil => true или :allow_blank => true на validates_length_of.

Значения по умолчанию для параметров allow_nil и allow_blank при любой проверке являются ложными. validates_presence_of только терпит неудачу, если атрибут не равен ни одному, ни пустому. Поэтому validates_presence_of делается избыточным большинством предоставленных валидаций, когда в качестве параметров проверки не предоставляются ни allow_nil, ни allow_blank.

3

Люди чрезмерно усердны. Вы можете использовать оба варианта, но у пользователя будет плохой опыт, если вы не пройдете :allow_nil до validates_length_of.

+0

Правильно, вот что я думал. : allow_nil полезен, если имя компании должно быть от 5 до 30 символов или может отсутствовать. Если вы хотите, чтобы название компании составляло от 5 до 30 символов, вы * не хотели бы: allow_nil. – mlambie

Смежные вопросы