Как искать по JSON полям
В нашем примере поле data_json
будет иметь тип json, а ModelName
- название модели.
Если нужно сделать поиск по верхнеуровневому ключу ‘key’, то запрос будет выглядеть следующим образом:
# data_json = { "key": "value" }
ModelName.where("data_json->>'key' = ?", "value")
Для поиска по вложенным ключам можно использовать конструкции, представленные ниже (результат один и тот же, но во втором примере реализовано через цепочку операторов):
# data_json = { "a": { "b": "value" }}
ModelName.where("data_json->>'{a,b}' = ?", "value")
ModelName.where("data_json->'a'->>'b' = ?", "value")