You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails传递布尔值false至JSON Schema时的验证异常问题

Rails中JSON Schema验证布尔值false时的问题

问题现象

  • 使用activerecord_json_validator进行JSON Schema验证时,布尔值true可正常通过验证,但false会被判定为缺失必填项
  • 启用模型验证规则validates :column, inclusion: {in: [true, false] }后,传递false会触发报错:Validation failed: value1 is not included in the list, value2 is not included in the list
  • 控制台直接赋值false测试同样失败,错误提示:["Dynamic attributes object at root is missing required properties: bladder_compatible, bladder_included"]

环境与背景

  • 应用通过activerecord_json_validator读取CSV文件数据并做JSON Schema验证,CSV中的布尔值以字符串"true"/"false"形式传递,已实现类型转换逻辑
  • 当前使用的布尔值转换方法:
def convert_to_bool(value)
  return true if value == true || value.to_s.downcase == 'true'
  return false if value == false || value.to_s.downcase == 'false'

  value
end
  • 日志显示转换逻辑已成功将字符串"true"/"false"转为布尔值true/false,但JSON Schema验证仍提示缺少必填项
  • 使用的JSON Schema定义:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "bladder_compatible": {
      "type": "boolean"
    },
    "bladder_included": {
      "type": "boolean"
    },
    "bladder_volume_l": {
      "type": "number",
      "minimum": 1.5,
      "maximum": 3
    }
  },
  "required": ["bladder_compatible", "bladder_included"]
}
  • 该Schema在其他验证器及activerecord_json_validator依赖的json schemer中测试均正常

控制台测试代码

b = BagContainer.new
b.dynamic_attributes = {bladder_compatible: false, bladder_included: false, bladder_volume_l: 2}
b.valid?
# 验证失败,执行b.errors.full_messages返回:
# ["Dynamic attributes object at root is missing required properties: bladder_compatible, bladder_included"]

内容的提问来源于stack exchange,提问作者dukehenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:37:06