레일 validates_numericality_of
에 부울 과 같은 유효성 검사기가 있습니까? 아니면 직접 굴려야합니까?
답변
Rails 3부터 다음을 수행 할 수 있습니다.
validates :field, inclusion: { in: [ true, false ] }
답변
부울 필드의 경우 다음과 같은 작업이 필요하다고 생각합니다.
validates_inclusion_of :field_name, :in => [true, false]
이전 버전의 API : “Object # blank?가 부울 값을 처리하는 방식 때문입니다. false.blank? # => true”
그래도 Rails 3에서 이것이 여전히 괜찮을지 확실하지 않습니다.
답변
이것을 적용하면 다음을 얻습니다.
shoulda-matchers의 경고 :
validate_inclusion_of
부울 열이 부울 값을 허용하고 부울이 아닌 값을 허용하지 않는다고 주장하는 데 사용 하고 있습니다. 부울 열이 부울이 아닌 값을 부울 값으로 자동 변환하므로이를 완전히 테스트 할 수는 없습니다. 따라서이 테스트를 제거하는 것을 고려해야합니다.
답변
더 짧은 버전을 사용할 수 있습니다.
validates :field, inclusion: [true, false]
추가 생각. 열거 형을 다룰 때 상수도 사용하는 것을 좋아합니다.
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
답변
Rails Docs 5.2.3 에 따른 답변
이 도우미 (존재)는 지정된 속성이 비어 있지 않은지 확인합니다. 공백을 사용합니까? 값이 nil인지 또는 공백 문자열인지, 즉 비어 있거나 공백으로 구성된 문자열인지 확인하는 메소드입니다.
false.blank 이후? true 인 경우 부울 필드가 있는지 확인하려면 다음 유효성 검사 중 하나를 사용해야합니다.
validates :boolean_field_name, inclusion: { in: [true, false] }