我有一个带有jsonb列的下表概要文件
项目类型对象更改“项目”[{“客户id”:[1,5],“其他id”:[1},{“客户id”:[4,5],“其他id”:2}],“项目”[{“客户id”:[3,6],“其他id”:3},{“客户id”:[3,5],“其他id”:[2}]
我希望能够使用活动记录进行查询,以查找所有具有customer_id 5的行。
我试着做了下面的事情,但没有成功 Profile.where("object_changes->'customer_id' @> '5'")
Profile.where("object_changes->'customer_id' @> ?::jsonb", [5].to_json) Profile.where("? = ANY (object_changes->>'customer_id')", 5)
有人知道我如何能够在RubyonRails中进行此查询吗。
我的rails版本是rails 4.2,ruby版本是2.4.10,我使用postgres作为我的db
1条答案
按热度按时间zqry0prt1#
我想你需要的是
jsonb_to_recordset
和横向连接。对于以下架构和数据
类似这样的方法会奏效:
因此,使用ar查询接口的最终解决方案类似于(我对要查找的值进行了硬编码,但我相信您已经明白了这一点,参数化不是问题):