2009-10-20 2 views
4

ActiveRecord 모델에서는 validates_length_of도 사용하는 경우 validates_presence_of을 사용하는 것이 가장 좋습니다. 예를 들어validates_length_of를 사용하는 경우 validates_presence_of가 필요합니까?

:

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

나를 위해, 그것은 중복 보인다. 5에서 30 사이의 길이를 가짐은 특성이 또한 존재한다는 것을 의미하지만, 나는 이것이 모든 곳에서 사용되는 것을 본다. 또한 실제로 누락 된 속성과 관련하여 두 가지 오류 메시지가 표시되는 것을 의미합니다.

데이터가 누락되었거나 데이터 검증시 지나치게 열정적입니까?

답변

7

validates_length_of에 :allow_nil => true 또는 :allow_blank => true을 입력 한 경우를 제외하고는 validates_length_of와 함께 사용하면 validates_presence_of가 완전히 중복됩니다.

모든 유효성 검사에서 allow_nil 및 allow_blank 옵션의 기본값은 false입니다. validates_presence_of는 속성이 nil 또는 blank가 아닌 경우에만 실패합니다. 따라서 validates_presence_of는 allow_nil 또는 allow_blank가 검증에 대한 옵션으로 제공되지 않을 때 대부분의 제공된 유효성 검사에 의해 중복됩니다.

3

사람들은 지나치게 열광적입니다. 두 가지 모두 사용할 수 있지만 :allow_nilvalidates_length_of으로 전달하지 않으면 사용자의 경험이 좋지 않습니다.

+0

맞아, 그건 내가 생각한거야. : allow_nil은 회사 이름이 5 자 이상 30 자 이하 여야하거나 유용하지 않은 경우에만 유용합니다. 회사 이름의 길이를 5 ~ 30 자로하려면 * allow_nil이 필요하지 않습니다. – mlambie

관련 문제