rails重构查询以正确sql注入

时间:2012-07-12 13:16:10

标签: 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

1 个答案:

答案 0 :(得分:1)

where(countries.map { |c| "zones.countries LIKE ?" }.join(" OR "), *countries.map{ |c| "%#{c}%"})

您可以使用类似的内容替换上面where的第一个参数,以避免出现一个循环

("zones.countries LIKE ? OR " * countries.size).gsub(/ OR $/, '')