2014-11-18 2 views
18

Quindi, ho un modulo, utilizzando un booleano per selezionare maschio o femmina. Quando uso convalida: Presenza per i campi booleani, ritorna indietro, il sesso non può essere vuoto! Wehn rimuovo la parte di convalida, la lascia passare come vera o falsa nel DB. Non lo lascia nullo. Presumo che questo sia un problema perché im usando t/f ma non riesco a capire perché. Qui è il mio modelloRails validates_presense non convalida su booleano?

class Visit < ActiveRecord::Base 
    validates :user_id, :first_name, :last_name, :birthdate, :gender, 
     presence: true 
end 

E mio punto di vista per il campo

<%= f.select :gender, 
    [['Male',false],['Female',true]], :value => false, 
    label: "Gender" %> 

risposta

37

Poiché non è possibile utilizzare la convalida presenza sui campi booleani. Utilizzare invece l'inclusione. Vedere la documentazione qui: http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

Se si desidera verificare la presenza di un campo booleano (dove i valori reali sono vero e falso), si vuole utilizzare validates_inclusion_of: nome_campo, in: [true, false] .)

+0

Questo l'ha risolto! Grazie! Ho pensato che sarebbe stato qualcosa di facile da capire. – keith

+6

In Rails> 3 'validates: attribute_name, inclusion: {in: [true, false]}' –