我试图确保我的模型的一个字段是一个布尔值,但我的测试仍然失败.
阅读本文后:验证Rspec和Rails中的布尔值以及此Rails:如何验证某些内容是否为布尔值?我最终这样做了:
class Model < ActiveRecord::Base
validates :my_field, :inclusion => { :in => [true, false] }
end
Run Code Online (Sandbox Code Playgroud)
我已经尝试过几种不同的测试方法(使用rspec和shoulda匹配器),并且由于我的测试一直在失败,我现在正处于最愚蠢的可能(?)方式.仍然,测试没有通过,我猜测有一些机制可以在某处转换价值.
以下是我用来了解发生了什么的事情:
# create instance without setting value ...
# these work as expected
model_instance.valid?.should be_false # passes
model_instance.my_field = true
model_instance.valid?.should be_true # passes
model_instance.my_field = false
model_instance.valid?.should be_true # passes
# works as expected
model_instance.my_field = ""
model_instance.valid?.should be_false # passes
# these should pass but fail
model_instance.my_field = "foo"
model_instance.my_field.should == "foo" # fails as well, …Run Code Online (Sandbox Code Playgroud)