Odpowiedzi:
Od Rails 3 możesz:
validates :field, inclusion: { in: [ true, false ] }
validates :field, inclusion: [true, false]
validates :field, presence: true
) dla pola boolowskiego (pole nie będzie prawidłowe dla false
wartości). Ale w obu Railsach 3 i 4, gdybyś validates :field, inclusion: [true, false]
przetestował włączenie do listy wartości, z efektem ubocznym, aby sprawdzić obecność pola (chyba że jedna z tych wartości jest nil
oczywiście).
validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Uważam, że dla pola boolowskiego będziesz musiał zrobić coś takiego:
validates_inclusion_of :field_name, :in => [true, false]
Ze starszej wersji interfejsu API : „Wynika to ze sposobu, w jaki Object # blank? Obsługuje wartości logiczne. False.blank? # => True”
Nie jestem jednak pewien, czy to nadal będzie dobre dla Rails 3, mam nadzieję, że pomogło!
true
.
Kiedy to stosuję, otrzymuję:
Ostrzeżenie przed dopasowanymi osobami:
Używasz validate_inclusion_of
do stwierdzenia, że kolumna logiczna dopuszcza wartości logiczne i nie zezwala na wartości inne niż boolowskie. Należy pamiętać, że nie jest możliwe pełne przetestowanie tego, ponieważ kolumny logiczne automatycznie przekonwertują wartości inne niż boolowskie na wartości logiczne. Dlatego powinieneś rozważyć usunięcie tego testu.
Możesz użyć krótszej wersji:
validates :field, inclusion: [true, false]
Dodatkowa myśl. Kiedy mam do czynienia z wyliczeniami, lubię też używać stałej:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
Odpowiedz zgodnie z dokumentami Rails 5.2.3
Ten pomocnik (obecność) sprawdza, czy określone atrybuty nie są puste. Wykorzystuje puste miejsce? metody, aby sprawdzić, czy wartość jest równa zero lub pusty ciąg, to znaczy ciąg, który jest pusty lub składa się z białych znaków.
Od false.blank? jest prawdą, jeśli chcesz zweryfikować obecność pola boolowskiego, powinieneś użyć jednej z następujących walidacji:
validates :boolean_field_name, inclusion: { in: [true, false] }