Ale*_*eue 10 postgresql activerecord ruby-on-rails
我有一个包含名称的Person模型,我想尽可能简单地搜索它们.
是否有一个rails/ActiveRecord方法People.like(:name => "%#{query}%"),就像DataMapper一样?我在ActiveRecord文档中找不到这样的内容,但如果根本不可能,我会感到震惊.
目前我已经做到了Person.where "name LIKE '%#{query}%'",它运行良好,但是一个明显的SQL注入漏洞.
Rails 3.2
Luí*_*lho 37
使用参数化查询来避免SQL注入,如下所示:
Person.where('name LIKE ?', '%' + query + '%')
Run Code Online (Sandbox Code Playgroud)
请注意,百分号必须是参数的一部分,而不是where子句,否则Rails将对其进行转义,您将收到语法错误.(至少在postgres上.)
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "%"
LINE 1: ...name LIKE %'John...
^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9301 次 |
| 最近记录: |