Ruby on Rails 2.3 SQL LIKE查询

nem*_*ign 1 ruby-on-rails

我能够在Rails 2.3中进行LIKE查询的唯一方法如下:

access_points.all(:conditions => "mac_address LIKE '%#{@q}%'")
Run Code Online (Sandbox Code Playgroud)

官方文档说这样做是不安全的,因为受SQL注入:

将自己的条件构建为纯字符串可能会使您容易受到SQL注入攻击.例如,Client.first(:conditions =>"name LIKE'%#{params [:name]}%'")不安全.有关使用数组处理条件的首选方法,请参阅下一节. http://guides.rubyonrails.org/v2.3.8/active_record_querying.html

但不幸的是,它没有解释如何正确地进行LIKE查询,而且我无法在谷歌上找到它,因为LIKE是如此通用的关键字.

任何提示?我是Rails的新手,但我有Symfony和Django的经验.

Osc*_*Ben 9

这就是你想要的方式:

:conditions => ['mac_address LIKE ?', "%#{@q}%"]
Run Code Online (Sandbox Code Playgroud)