MonogID を使用していくつかのモデルを作成していますが、そのうちの 1 つは nil 値を受け入れることができるブール値です。これが私がモデルを定義した方法です。
class Status
include Mongoid::Document
field :pending, type: Boolean
validates :pending, inclusion: { in: [true, false], allow_nil: true }
#...
end
ご覧のとおり、受け入れられる値をブール値と nil に設定しています。問題は、文字列を割り当てると、それが false に変換されて受け入れられることです。この方法では、検証は機能しません。この場合の 2 番目のテストは単に失敗します。
it { [true, false, nil].each { |value| should allow_value(value).for(:pending) } }
it { ['not_valid', ''].each { |value| should_not allow_value(value).for(:pending) } }
現在、私が考えている唯一の解決策は、TrueClass、FalseClass、または NilClass である値をチェックするカスタム バリデータを作成することですが、より簡単な解決策を失っているようです。Webで調べてみましたが、解決策が見つかりませんでした。
ありがとう。