반응형
문자열의 최소 및 최대 길이를 확인하지만 공백 일 수 있음
유효성을 검사하고 싶은 필드가 있습니다. 필드를 비워 둘 수 있기를 원하지만 사용자가 데이터를 입력하는 경우 특정 형식으로되기를 원합니다. 현재 모델에서 아래 유효성 검사를 사용하고 있지만 사용자가 공백으로 둘 수는 없습니다.
validates_length_of :foo, :maximum => 5
validates_length_of :foo, :minimum => 5
내 목표를 달성하기 위해 어떻게 작성합니까?
다음과 같은 것이 필요할 수 있다고 생각합니다.
validates_length_of :foo, minimum: 5, maximum: 5, allow_blank: true
더 많은 예 : ActiveRecord :: Validations :: ClassMethods
다음 형식을 사용할 수도 있습니다.
validates :foo, length: {minimum: 5, maximum: 5}, allow_blank: true
또는 최소값과 최대 값이 동일하므로 다음도 작동합니다.
validates :foo, length: {is: 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"과 같이 좀 더 의미있는 것을 나타내야하지만 그저 편지에 대한 질문에 답하는 것뿐입니다.
모든 validates_ *는 : if 또는 : unless 옵션을 허용합니다.
validates_length_of :foo, :maximum => 5, :if => :validate_foo_condition
여기서 validate_foo_condition은 true 또는 false를 반환하는 메서드입니다.
Proc 객체를 전달할 수도 있습니다.
validates_length_of :foo, :maximum => 5, :unless => Proc.new {|object| object.foo.blank?}
validates_length_of :reason, minimum: 3, maximum: 30
동일한 rspec은
it { should validate_length_of(:reason).is_at_least(3).is_at_most(30) }
어떻게에 대한: validates_length_of :foo, is: 3, allow_blank: true
모델에 추가 :
validates :color, length: { is: 7 }
색상은 문자열입니다.
t.string :color, null: false, default: '#0093FF', limit: 7
예를 들어 모델에서
def validate
errors.add_to_base 'error message' unless self.foo.length == 5 or self.foo.blanc?
end
반응형
'program story' 카테고리의 다른 글
uitextview의 문자 수 제한 (0) | 2020.10.20 |
---|---|
matplotlib에서 막대 높이의 합이 1 인 히스토그램 플로팅 (0) | 2020.10.20 |
String이 있는데 왜 StringBuilder인가? (0) | 2020.10.20 |
Dart에서 난수를 어떻게 생성합니까? (0) | 2020.10.19 |
단일 파이프 '|'를 사용하여 무엇을합니까? (0) | 2020.10.19 |