Railsにはvalidates_numericality_of
ブール値の場合、または独自にロールする必要がありますか?
Rails 3なので、次のことができます。
validates :field, inclusion: { in: [ true, false ] }
ブール値フィールドの場合、次のようなことを行う必要があると考えています。
validates_inclusion_of :field_name, :in => [true, false]
古いバージョンの [〜#〜] api [〜#〜] :「これは、Object#blank?がブール値を処理する方法によるものです。false.blank?#=> true」
Rails 3でもこれで問題ないかどうかはわかりませんが、助けてくれればと思います!
これを適用すると、次のようになります。
Shoulda-matchersからの警告:
validate_inclusion_of
を使用して、ブール列がブール値を許可し、非ブール値を許可しないことをアサートしています。ブール列はブール値以外の値をブール値に自動的に変換するため、これを完全にテストすることはできないことに注意してください。したがって、このテストの削除を検討する必要があります。
短いバージョンを使用できます:
validates :field, inclusion: [true, false]
余分な考え。列挙型を扱うときは、定数も使用したいです:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
Rails Docs 5.2. に従って回答する
このヘルパー(存在)は、指定された属性が空でないことを検証します。空白を使用しますか?値がnilまたは空白文字列、つまり、空であるか空白で構成される文字列であるかどうかを確認するメソッド。
False.blankからですか?ブールフィールドの存在を検証する場合は、次の検証のいずれかを使用する必要があります。
validates :boolean_field_name, inclusion: { in: [true, false] }