2014-11-18 14 views
18

Also, ich habe ein Formular, mit einem Boolean, um männlich oder weiblich zu wählen. Wenn ich validates: presense für die booleschen Felder verwende, gibt es zurück, Geschlecht darf nicht leer sein! Wehn Ich entferne den validates Teil, es lässt ihn als wahr oder falsch in die DB durch. Es lässt es nicht Null. Ich gehe davon aus, dass dies ein Problem ist, weil ich t/f benutze, aber ich kann nicht herausfinden, warum. Hier ist mein ModellRails validates_presense nicht auf Boolean validieren?

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

Und meiner Meinung nach für das Feld

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

Antwort

37

Weil Sie nicht das Vorhandensein Validierung auf boolean Felder verwenden können. Verwenden Sie stattdessen die Einfügung. Lesen Sie die Dokumentation hier: http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

Wenn Sie das Vorhandensein eines boolean Feld validieren möchten (wo die wirklichen Werte wahr und falsch sind), werden Sie verwenden möchten validates_inclusion_of: field_name, in: [true, false] .)

+0

Das hat es gelöst! Vielen Dank! Ich dachte, es wäre etwas Leichtes, das ich vermisste. – keith

+6

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