Я работаю с Rails 4.2 и Postgres 9.4, чтобы опробовать новый тип данных JSONB. Один из столбцов JSONB в моей базе данных содержит массив, и я хочу иметь возможность запрашивать записи, где этот массив содержит определенное значение. Я понял, как это сделать, используя новый JSONB "вопросительный знак" ( "содержит" ), как описано здесь: http://www.postgresql.org/docs/9.4/static/functions-json.html
Итак, в сыром SQL я могу заставить это работать, как в этом примере:
SELECT * FROM people WHERE roles ? '32486d83-4a38-42ba-afdb-f77ca40ea1fc';
Но я не вижу никакого способа сделать этот запрос из Rails через ActiveRecord. Я попытался выполнить необработанный запрос с использованием метода "where", как показано ниже:
Person.where("roles ? ?", "32486d83-4a38-42ba-afdb-f77ca40ea1fc")
Но поскольку знак вопроса является специальным символом, используемым для замены параметров, я получаю эту ошибку:
ActiveRecord:: PreparedStatementInvalid: неверное число переменных привязки (1 для 2) в: роли?
Думаю, мне нужен способ избежать "?" потому что я хочу, чтобы он прошел буквально. Я пробовал \? а также?? без везения. Любая помощь приветствуется!