ActiveRecord поиск по JSON полям

ActiveRecord поиск по JSON полям

Как искать по 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")