¿Los rieles tienen un validador como validates_numericality_of
para booleano o necesito rodar el mío?
ruby-on-rails
validation
aarona
fuente
fuente
validates :field, inclusion: [true, false]
validates :field, presence: true
) para un campo booleano (el campo no sería válido para unfalse
valor). Pero tanto en los rieles 3 como en el 4, el tenervalidates :field, inclusion: [true, false]
probaría la inclusión en una lista de valores, con el efecto secundario para probar la presencia del campo (a menos que uno de esos valores sea,nil
por supuesto).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Creo que para un campo booleano necesitarás hacer algo como:
De una versión anterior de la API : "Esto se debe a la forma en que Object # blank? Maneja los valores booleanos. False.blank? # => True"
Sin embargo, no estoy seguro de si esto seguirá estando bien para Rails 3, ¡espero que haya ayudado!
fuente
true
.Cuando aplico esto, obtengo:
Advertencia de los shoulda-matchers:
Está utilizando
validate_inclusion_of
para afirmar que una columna booleana permite valores booleanos y no permite valores no booleanos. Tenga en cuenta que no es posible probar esto por completo, ya que las columnas booleanas convertirán automáticamente los valores no booleanos en valores booleanos. Por lo tanto, debería considerar eliminar esta prueba.fuente
Puede utilizar la versión más corta:
Pensamiento extra. Cuando trato con enumeraciones, también me gusta usar una constante:
fuente
Responda de acuerdo con Rails Docs 5.2.3
Este ayudante (presencia) valida que los atributos especificados no estén vacíos. ¿Utiliza el espacio en blanco? para comprobar si el valor es nulo o una cadena en blanco, es decir, una cadena que está vacía o consta de espacios en blanco.
¿Desde false.blank? es cierto, si desea validar la presencia de un campo booleano, debe usar una de las siguientes validaciones:
fuente