Как я могу выполнить поиск по json-типу postgres в многоуровневых системах с использованием активной записи

предположим, что у меня json ниже

:response_body => {
       "status" => "ok",
           "um" => {
           "a" => "a",
               "b" => {
                   "c" => "ok"
           }
   }

Пример моего поиска:

LogService.where(response_body: {"status" => "ok"})

Ответ 1

Если вы используете базу данных Postgres as, а столбец действительно является json-типом, вы можете использовать поиск в Rails следующим образом:

LogService.where("response_body#>>'{status}' = 'ok'")

Этот # → будет перемещаться по пути json и выполнять поиск. Если вы используете только # > (только с одним > ), он вернет remoning json.

Другой пример, если вы хотите получить "c" = > "ok"

LogService.where("response_body#>>'{um, b, c}' = 'ok'")

Я думаю, что это так.