validates_inclusion_of :in => [true, false] 允许字符串和 Fixnums

sol*_*ell 3 validation boolean ruby-on-rails

我的模型中有此验证:

validates_inclusion_of :imported, :in => [true, false]
Run Code Online (Sandbox Code Playgroud)

但仍然允许字符串和 Fixnums。这个 Shoulda 宏返回 2 个失败:

should_not_allow_values_for :imported, "blah", 42
Run Code Online (Sandbox Code Playgroud)

我已经通过在测试中执行此操作来检查宏没有错:

@item.imported = 42
assert !@item.save
Run Code Online (Sandbox Code Playgroud)

我得到了这个失败:

<false> is not true.
Run Code Online (Sandbox Code Playgroud)

这是 schema.rb 中的相关行:

t.boolean  "imported"
Run Code Online (Sandbox Code Playgroud)

kar*_*kie 5

这个问题现在已经过时了,所以我希望你能找到答案,但这是我回答的另一个问题的综合故事:

Rails:验证包含布尔值失败的测试