Rails 是否有一个像 validates_numericality_of这样的布尔验证器,还是我需要自己的验证器?
validates_numericality_of
我相信对于布尔字段,您需要执行以下操作:
validates_inclusion_of :field_name, :in => [true, false]
从旧版本的 API: “这是由于方式对象 # 空白?处理布尔值。假的,空白的?# = > true”
我不确定这是否仍然适用于 Rails 3,但是,希望这有所帮助!
因为 Rails 3,你可以做:
validates :field, inclusion: { in: [ true, false ] }
当我应用这个时,我得到:
来自“应该”匹配者的警告:
You are using validate_inclusion_of to assert that a boolean column 允许布尔值,不允许非布尔值 is not possible to fully test this, as boolean columns will 自动将非布尔值转换为布尔值 should consider removing this test.
validate_inclusion_of
你可以使用简短的版本:
validates :field, inclusion: [true, false]
额外的想法。在处理枚举时,我也喜欢使用一个常量:
KINDS = %w(opening appointment).freeze enum kind: KINDS validates :kind, inclusion: KINDS
Answer according to Rails Docs 5.2.3
这个 helper (存在)验证指定的属性不是空的。它用的是空白?方法检查该值是空字符串还是空字符串,即空字符串或由空格组成的字符串。
从假的开始,空白的?为 true,如果你想验证一个布尔字段的存在,你应该使用以下验证之一:
validates :boolean_field_name, inclusion: { in: [true, false] }