加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Active Record查询json数组(Rails 4 / pos

发布时间:2020-12-16 21:24:32 所属栏目:百科 来源:网络整理
导读:我有一个Deal模型,它具有一个名为’info’的属性,具有以下结构: 交易中的’info’栏内: Deal1.info = [{"deal_id":"4","text1":"qqq","text2":"sqsq","image1":"sqqs","video1":"sqsq"},{"deal_id":"5","text1":"sqqs","text2":"qq"}]# no image here insi
我有一个Deal模型,它具有一个名为’info’的属性,具有以下结构:

交易中的’info’栏内:

Deal1.info = [{"deal_id":"4","text1":"qqq","text2":"sqsq","image1":"sqqs","video1":"sqsq"},{"deal_id":"5","text1":"sqqs","text2":"qq"}]

# no image here inside the json
Deal2.info = 
[{"deal_id":"4","text2":"qq"}]

该列在移民中被定义为json

add_column :deals,:info,:json,default: '[]'

如何在jsonb中使用活动记录查询?

>查找信息包含至少一个deal_id = 4的所有交易
>使用名为’image1’的键找到信息包含的所有交易以及至少json块({})(它应该只输出Deal1,而不是deal2)

解决方法

我有一个类似的列,我不得不将列类型从json更改为jsonb.

add_column:deals,:info,:jsonb,default:[],null:false,index:true

获取jsonb的数据类型后,我能够执行此类型的activerecord查询.

Info.where(‘deals @>?’,'[{“deal_id”:“4”}]’)

我不太确定如何用activerecord(http://www.postgresql.org/docs/9.4/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE)编写所有这些来实现你的第二个要点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读