我正在使用 MonogID 创建一些模型,其中一个是可以接受 nil 值的布尔值。这是我定义模型的方式。
class Status
include Mongoid::Document
field :pending, type: Boolean
validates :pending, inclusion: { in: [true, false], allow_nil: true }
#...
end
如您所见,我将接受的值设置为布尔值和 nil。问题是当我分配一个字符串时,它被转换为 false 并被接受。这样,验证不起作用。在这种情况下,第二个测试失败了。
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 的值,但似乎我失去了一个更简单的解决方案。我在网上查了一下,但没有找到解决办法。
谢谢。