В приложении Rails (5.2) с PG (10) в качестве базы данных мне нужно выполнить необработанный SQL-запрос.
В запросе мне нужно добавить предложение WHERE
, которое проверяетqp.id
входит в число project.qp_ids
, которые хранятся в виде массива строк.
t.text :qp_ids, array: true, default: []
Я пробовал несколько решений, среди которых следующие
" ... WHERE qp.id = ANY #{project.qp_ids}"
" ... WHERE qp.id = ANY #{project.qp_ids.join(', ')}"
" ... WHERE qp.id = ANY ARRAY(#{project.qp_ids.join(', '))}"
" ... WHERE qp.id = IN (#{project.qp_ids.join(', ')})"
Но все выдают PG::SyntaxError
.
Как правильно интерполировать массив PG?
UPDATE1
Приведенный ниже код работает, но очень уродливо,
" ... WHERE qp.id = IN (#{self.quality_process_ids.map {|id| "'#{id}'"}.join(',')})"