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

如何在Rails中创建作用域过滤JSON列的指定键值

Rails JSON列筛选作用域实现方法

你的写法存在语法错误,Rails无法直接通过column["age"]: 12这种格式查询JSON列。需要根据你使用的数据库类型,采用对应的JSON查询语法来实现:

1. 若使用PostgreSQL(支持json/jsonb类型)

方法一:用->>操作符提取字符串值匹配

scope :age_filter, -> { where("你的列名 ->> 'age' = ?", '12') }

方法二:用@>操作符匹配JSON子对象

scope :age_filter, -> { where("你的列名 @> ?", { age: '12' }.to_json) }

2. 若使用MySQL(支持json类型)

方法一:调用JSON函数查询

scope :age_filter, -> { where("JSON_UNQUOTE(JSON_EXTRACT(你的列名, '$.age')) = ?", '12') }

方法二:用简化的->>操作符

scope :age_filter, -> { where("你的列名->>'$.age' = ?", '12') }

注意事项:

  • 将你的列名替换为实际存储JSON数据的列名
  • 你的JSON中age的值是字符串'12',所以查询条件要使用字符串'12';如果数据库中存储的是数字类型,则改为12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:27