Czy szyny mają walidator, taki jak validates_numericality_of
dla wartości logicznych, czy też muszę użyć własnego?
ruby-on-rails
validation
aarona
źródło
źródło
validates :field, inclusion: [true, false]
validates :field, presence: true
) dla pola boolowskiego (pole nie będzie prawidłowe dlafalse
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 jestnil
oczywiście).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Uważam, że dla pola boolowskiego będziesz musiał zrobić coś takiego:
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!
źródł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.źródło
Możesz użyć krótszej wersji:
Dodatkowa myśl. Kiedy mam do czynienia z wyliczeniami, lubię też używać stałej:
źródło
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:
źródło