Dan*_*ark 19 activerecord ruby-on-rails
我在Rails 3.x中做这样的查询
Speaker.where("name like '%yson%'")
Run Code Online (Sandbox Code Playgroud)
但是我想避免使用特定于DB的代码.这样做的正确方法是什么?
如果在Rails 2.x中有一种方法可以做到这一点,那也会有所帮助.
Sim*_*tti 23
在Rails 3或更高版本中
Speaker.where("name LIKE ?", "%yson%")
Run Code Online (Sandbox Code Playgroud)
在Rails 2中
Speaker.all(:conditions => ["name LIKE ?", "%yson%"])
Run Code Online (Sandbox Code Playgroud)
避免直接插入字符串,因为该值不会被转义,并且您容易受到SQL注入攻击.
小智 11
您可以使用.matches.
> t[:name].matches('%lore').to_sql
=> "\"products\".\"name\" LIKE '%lore'"
Run Code Online (Sandbox Code Playgroud)
查询中的实际用法是:
Speaker.where(Speaker.arel_table[:name].matches('%lore'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12757 次 |
| 最近记录: |