2010-08-31 99 views

回答

204

由于Rails 3中,你可以这样做:

validates :field, inclusion: { in: [ true, false ] } 
+1

+1是的。我喜欢他们提供的方式来做到这一点。 – DJTripleThreat 2011-01-18 17:08:21

+2

因此,这会得到验证权限,但错误消息对最终用户没有帮助:“myfield不在列表中” – 2013-03-28 05:12:10

+2

好点。您可以自定义错误消息:http://guides.rubyonrails.org/active_record_validations_callbacks.html#message – 2013-03-28 16:56:08

37

我相信,一个布尔字段,你需要做这样的事情:

validates_inclusion_of :field_name, :in => [true, false] 

从旧版本的API的:“这是由于方式对象#空白处理布尔值假的?。空白?#=>真“

我不确定这对Rails 3来说还是不错,希望有所帮助!

+0

lol @ Rails 3.我敢打赌,这将是未来数月的警告。好的,我认为这种情况已经发生,你同意。谢谢! – DJTripleThreat 2010-08-31 11:19:39

+0

Rails 4的确如此!哇,false.blank? #=> true只是看起来像*错误*的答案,我不希望从Rails期望。 – 2013-09-12 12:49:25

8

当我申请,我得到:从早该-的匹配

警告:

您正在使用validate_inclusion_of断言,一个布尔列 允许布尔值并且不允许非布尔值。请注意, 不可能完全测试,因为布尔列将 自动将非布尔值转换为布尔值。因此,你应该考虑删除这个测试。

+0

对于允许null的字段,它是否仍然将nil转换为布尔值? – mwfearnley 2016-09-28 16:09:08

相关问题