我正在使用MonogID创建一些模型,其中一个是可以接受nil值的布尔值。以下是我定义模型的方法。
class Status
include Mongoid::Document
field :pending, type: Boolean
validates :pending, inclusion: { in: [true, false], allow_nil: true }
#...
end
如您所见,我将接受的值设置为布尔值和零。问题是当我分配一个字符串时,它被转换为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,但似乎我失去了一个更简单的解决方案。我已经在网上查了一下,但我找不到解决方案。
感谢。
答案 0 :(得分:0)
您无法找到解决方案,因为当您为布尔字段赋值时,它会将该值解释为true,false或nil,当您尝试保存时,它将具有一个值(true,false, nil)将通过验证。