【发布时间】:2016-03-08 13:03:04
【问题描述】:
我的events 表中有一个名为payload 的JSON 列。我可以像这样创建一个事件:
Event.create!(application_id: 1, stage: 'INITIATION', payload: { key: 'OUTCOME', value: {school_id: 2, prefered_language: 'GBP'}})
类似的简单查询
Event.where("payload->>'key' = ?", "OUTCOME")
可以正常工作,但是如何使用嵌套在 value 部分中的 JSON 添加额外的过滤器
Event.where("payload->>'key' = ? AND payload ->>'value'->>'school' = ?", "OUTCOME", 2)
^^^^^^^^^^^^^^^^^^^^
我试过了,但我得到了:
PG::UndefinedFunction: ERROR: operator does not exist: text ->> unknown
LINE 1: ...ad ->>'key' = 'INPUTPARAMS' AND payload ->>'value'->>'school... ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
如何进入学校属性值内?
我从 ActiveRecord 和 JSON 上的 documentation 中获得了这个想法
【问题讨论】:
标签: ruby-on-rails json postgresql