Существуют ли какие-либо методы / шаблоны для очистки массива массивов при использовании его в качестве SQL ввода?
Требуется реализовать следующий стиль запроса в ActiveRecord:
SELECT *
FROM "addresses"
WHERE ("addresses"."city", "addresses"."state", "addresses"."country") IN (
('Juneau', 'AK', 'US'),
('Albany', 'NY', 'US'),
...
)
Например:
searches = [
['Juneau', 'AK', 'US'],
['Albany', 'NY', 'US'],
]
searches_sql = searches.map do |search|
"(#{search.map { |query| Address.connection.quote(query) }.join(', ')})"
end.join(', ')
Address.where(%(("addresses"."city", "addresses"."state", "addresses"."country") IN (#{searches_sql})))
Работает, но полагается на некое ручное экранирование соединения, которое не кажутся идеальными (и их нелегко обобщить за пределы этой области).