【发布时间】:2020-05-28 19:27:29
【问题描述】:
在将数组用作 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})))
有效,但依赖于一些看起来并不理想的手动连接转义(并且在此范围之外不容易泛化)。
【问题讨论】:
标签: ruby-on-rails rails-activerecord