유효성을 검사하고 싶은 필드가 있습니다. 필드를 비워 둘 수 있기를 원하지만 사용자가 데이터를 입력하는 경우 특정 형식을 원합니다. 현재 모델에서 아래 유효성 검사를 사용하고 있지만 사용자가 공백으로 둘 수는 없습니다.
validates_length_of :foo, :maximum => 5
validates_length_of :foo, :minimum => 5
내 목표를 달성하기 위해 어떻게 작성합니까?
답변:
다음과 같은 것이 필요할 수 있다고 생각합니다.
validates_length_of :foo, minimum: 5, maximum: 5, allow_blank: true
로부터 validates_length_of 문서 :
validates_length_of :phone, :in => 7..32, :allow_blank => true
:allow_blank
-속성은 공백 일 수 있습니다. 유효성 검사를 건너 뜁니다.
또는 validates 문서 에서보다 간결하게 (새로운 해시 구문 사용) :
validates :foo, length: 5..5, allow_blank: true
상한은 아마도 "in : 5..20"과 같이 좀 더 의미있는 것을 나타내야하지만 그저 편지에 대한 질문에 답하는 것뿐입니다.
in
validates :foo, length: 2..5, allow_blank: true
하지만`length : {is : 5}`는 OP의 경우에서 작동합니다
모델에 추가 :
validates :color, length: { is: 7 }
색상은 문자열입니다.
t.string :color, null: false, default: '#0093FF', limit: 7