rails是否有一个像validates_numericality_of
这样的验证器用于布尔值,还是我需要自己滚动?
答案 0 :(得分:226)
从Rails 3开始,你可以这样做:
validates :field, inclusion: { in: [ true, false ] }
答案 1 :(得分:38)
我相信你需要做一个布尔字段,例如:
validates_inclusion_of :field_name, :in => [true, false]
从API的旧版本开始:“这是由于Object#blank的方式处理布尔值.false.blank?#=> true”
我不确定这对Rails 3是否仍然没问题,希望有所帮助!
答案 2 :(得分:9)
当我申请时,我得到:
来自shoulda-matcher的警告:
您正在使用validate_inclusion_of
断言布尔列
允许布尔值,不允许使用非布尔值。请注意它
是不可能完全测试这个,因为布尔列将
自动将非布尔值转换为布尔值。因此,你
应考虑删除此测试。
答案 3 :(得分:4)
您可以使用较短的版本:
validates :field, inclusion: [true, false]
额外的想法。在处理枚举时,我也喜欢使用常量:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
答案 4 :(得分:1)
此帮助程序(存在)验证指定的属性不为空。它使用空白吗?一种检查值是nil还是空白字符串的方法,即,该字符串为空或由空格组成。
因为是假的?空白?是的,如果您要验证布尔字段的存在,则应使用以下验证之一:
validates :boolean_field_name, inclusion: { in: [true, false] }