【发布时间】:2016-01-13 05:34:23
【问题描述】:
对模型的布尔字段进行验证有什么好处吗?
我已验证是否存在布尔字段
validates :boolean_attribute, presence: true
当 boolean_attribute 为 false 时失败。我搜索了一下,发现了这些与该问题相关的 SO 问题。
Rails database defaults and model validation for Boolean fields
Rails validates_presence not validating on Boolean?
然后添加了这个验证
validates :field, :inclusion => {:in => [true, false]}
这让我思考。我是否需要对布尔字段进行任何验证?它的值将永远是 true 或 false 或 nil 对吗?就算有人恶意改成一个数字,类型不会管它吗?还是上述包含验证提供了一些安全性?
【问题讨论】:
-
是的,我通常不打扰。如果该字段是强制性的 - 您可以使用上面的包含技巧,并确保将
null: false放在列上 -
如果您需要值为
true或false而不是nil,那么您想使用验证。如果true、false和nil都可以,则不需要验证。其中哪一个对您来说是正确的完全取决于您的用例。 -
@Jordan:我对 nil 很满意,只要 ruby 将它验证为 false 并且没有可能破坏系统的场景。有吗?
标签: ruby-on-rails ruby activerecord