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

Rails 7查询MySQL嵌套JSON字段遇错误,求解决方案

解决Rails 7 + MySQL 8嵌套JSON字段查询问题

正确查询写法

针对你的场景,有两种可靠的写法:

方法1:使用MySQL原生JSON字符串提取操作符->>

这个操作符会直接返回JSON字段的字符串值,无需额外处理引号:

# 位置参数写法
authors = Author.where("personal_info->>'$.address.state' = ?", 'CA')

# 命名参数写法(更易读)
authors = Author.where("personal_info->>'$.address.state' = :state", state: 'CA')

方法2:使用Rails的JSON包含查询(@>操作符)

利用MySQL的JSON包含特性,检查personal_info是否包含指定的嵌套结构:

authors = Author.where("personal_info @> ?", { address: { state: 'CA' } }.to_json)

为什么你之前的写法报错

你之前的尝试存在SQL语法错误:

  1. 路径格式错误:嵌套JSON的路径应该是$.address.state,而非拆分多次写$.address再$.state
  2. 操作符使用错误:->返回的是JSON对象,需要用->>来提取字符串值,否则会带引号,无法直接和字符串'CA'比对

这些语法错误导致数据库返回异常结果,Rails无法正常解析,从而抛出(Object doesn't support #inspect)错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:05:45