web-dev-qa-db-ja.com

Rails validates_presenseはブール値で検証しない?

そのため、ブール値を使用して男性または女性を選択するフォームがあります。ブール値フィールドにvalidates:presenseを使用すると、戻ります。性別を空白にすることはできません! Wehn私は検証部分を削除し、trueまたはfalseとしてDBに渡します。それは空のままではありません。私はt/fを使用しているのでこれが問題だと思っていますが、その理由がわからないようです。こちらが私のモデルです

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

そして、フィールドに対する私の見解

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

ブール値フィールドではプレゼンス検証を使用できないためです。代わりに包含を使用してください。次のドキュメントを参照してください。 http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

ブール値フィールドの存在を検証する場合(実際の値はtrueおよびfalse)、[true、false]でvalidates_inclusion_of:field_nameを使用します。)

68
Lukas Eklund