Ruby on rails rails重构查询以实现正确的sql注入
这是原始查询Ruby on rails rails重构查询以实现正确的sql注入,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,这是原始查询 where(countries.map{|c| "zones.countries LIKE '%#{c}%'"}.join(' OR ')) 现在我要用什么重写这个查询?像这样的接线员 where(countries.map{|c| "zones.countries LIKE ?", "%#{c}%"}.join(' OR ')) 但它不起作用。有什么建议吗? thx 您可以将上面的where的第一个参数替换为类似的内容,以避免一个循环 ("zones.countries LI
where(countries.map{|c| "zones.countries LIKE '%#{c}%'"}.join(' OR '))
现在我要用什么重写这个查询?像这样的接线员
where(countries.map{|c| "zones.countries LIKE ?", "%#{c}%"}.join(' OR '))
但它不起作用。有什么建议吗?
thx
您可以将上面的where
的第一个参数替换为类似的内容,以避免一个循环
("zones.countries LIKE ? OR " * countries.size).gsub(/ OR $/, '')
试试前面的SO问题:@davide-您正在编写的查询的一个性能提示。1.循环查询不是一个好主意。将Like子句与多个OR一起使用会降低查询速度。尝试将其转换为Like=并获取记录。此查询无法在大型数据集上扩展。放弃这个想法,让我知道你觉得怎么样。
("zones.countries LIKE ? OR " * countries.size).gsub(/ OR $/, '')