¿Los rieles tienen un validador como validates_numericality_ofpara 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 unfalsevalor). 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,nilpor 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_ofpara 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