Запрос в rails - строка в двойных кавычках внутри запроса - PullRequest
0 голосов
/ 08 января 2019

Мне нужен запрос, подобный этому

scope :find_email_usage, -> (id) {
    where("EXISTS ((with filter_table as (select id, jsonb_array_elements(jsonb_array_elements(filters) -> 'criteria') filter_json) select 1 from filter_table where filter_json @> '{\"mail_id\": ?}'))", id.to_s, id.to_s)

  }

Но структура должна быть как '{"a":1, "b":"2"}'::jsonb @> '{"b":2}'::jsonb

Как получить двойную кавычку в необработанном запросе с использованием подстановки? в рельсах.

where("EXISTS ((with filter_table as (select id, jsonb_array_elements(jsonb_array_elements(filters) -> 'criteria') filter_json) select 1 from filter_table where filter_json @> '{\"mail_id\": "#{id.to_s}"))", id.to_s)

Но есть ли другие способы получить строку в двойных кавычках внутри необработанного запроса?

1 Ответ

0 голосов
/ 08 января 2019

Самый простой способ - создать хеш Ruby, преобразовать его в JSON и передать эту строку в запрос:

where('EXISTS ((... where filter_json @> ?::jsonb))', { 'mail_id' => id.to_s }.to_json)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...