我有一个带有'json'类型字段的表,我用它来存储哈希数组。
这是我的架构的样子:
create_table "recommendations", force: true do |t|
t.text "message"
t.json "vendors", default: {}
t.datetime "created_at"
t.datetime "updated_at"
end
这是我的样本数据:
>> Recommendation.last.vendors
[{"name" => "Alphabeta"}, {"name" => "Gamma"}]
如何获得包含或名称为“Gamma”的供应商的所有建议?
我试过这个
>> Recommendation.where("vendors ->> 'name' = 'Gamma'").count
但不起作用。
更新: 我在这里找到了答案的方法Query for element of array in JSON column
这是:
s = "SELECT * FROM recommendations t, json_array_elements(t.vendors) AS elem WHERE elem->>'name' = 'Gamma';"
ActiveRecord::Base.connection.execute(s).to_a