1

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で調べてみましたが、解決策が見つかりませんでした。

ありがとう。

4

1 に答える 1

0

ブール値フィールドに値を割り当てると、その値が true、false、または nil として解釈され、保存しようとすると、値が 1 つ (true、false、nil) になるため、解決策を見つけることができませんでした。検証に合格します。

于 2012-07-17T14:29:20.273 に答える