O rails tem um validador como o validates_numericality_of
booleano ou preciso fazer o meu próprio?
ruby-on-rails
validation
Aarona
fonte
fonte
validates :field, inclusion: [true, false]
validates :field, presence: true
) para um campo booleano (o campo não seria válido para umfalse
valor). Mas em ambos os Rails 3 e 4, tendovalidates :field, inclusion: [true, false]
testaria para inclusão em uma lista de valores, com o efeito colateral de testar a presença do campo (a menos que um desses valores seja, énil
claro).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Eu acredito que para um campo booleano você precisará fazer algo como:
De uma versão mais antiga da API : "Isso se deve à maneira como Object # blank? Lida com valores booleanos. False.blank? # => True"
Não tenho certeza se isso ainda vai funcionar para Rails 3, espero que tenha ajudado!
fonte
true
.Quando aplico isso, recebo:
Aviso de igualadores de deveria:
Você está usando
validate_inclusion_of
para afirmar que uma coluna booleana permite valores booleanos e não permite valores não booleanos. Esteja ciente de que não é possível testar isso totalmente, pois as colunas booleanas converterão automaticamente valores não booleanos em booleanos. Portanto, você deve considerar a remoção deste teste.fonte
Você pode usar a versão mais curta:
Pensamento extra. Ao lidar com enums, também gosto de usar uma constante:
fonte
Resposta de acordo com Rails Docs 5.2.3
Este auxiliar (presença) valida se os atributos especificados não estão vazios. Ele usa o branco? método para verificar se o valor é nulo ou uma string em branco, ou seja, uma string que está vazia ou consiste em um espaço em branco.
Desde false.blank? for true, se você deseja validar a presença de um campo booleano, você deve usar uma das seguintes validações:
fonte