比如说,我们要从数据库中进行like查询相似的记录:
- class TasksController < ApplicationController
- def index
- @tasks = Task.find(:all,:conditions=>"name LIKE ’%#{params[:query]}%’")
- end
- end
这样的做法有问题,我们来看
因为如果用户输入的参数里面包含 ‘, 例如:Task 1’TEST,那么就会报错了。
解决的方法如下,我们把conditions这个参数由一个字符串改为一个数组如下:
:conditions => ["name LIKE ?", "%#{params[:query]}%"]
其中有几个问号,后面就应该跟着几个参数。这样的话,那么单引号就会被escape
当然,如果你用的是find_by 方法,那么rails也会自动帮你escape,例如
find_all_by_complete(false)
阅读(421) | 评论(0) | 转发(0) |