用Active Record查询一个json的数组(Rails 4/postgresql9.4)

Query an array of json with Active Record (Rails 4/postgresql9.4)

我的 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","text1":"qqq","video1":"sqsq"},{"deal_id":"5","text1":"sqqs","text2":"qq"}]

该列在迁移中定义为 json

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

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

我有一个类似的列,我不得不将列类型从 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) 编写所有这些内容以实现您的第二个要点。