3.5和ruby 1.8.7
我想知道如何仅使用1个文本字段创建多个搜索字段,也可以搜索同一个表中的4个列(name,name2,last_name,last_name2)
VALUES ====> name, name2, last_name and last_name2
TABLE ====> PROJECTS
FOR EXAMPLE => "Jagjit Smith Sgnit Robertson"
:name :name2 :last_name :last_name 2
"Jagjit Smith"
:name :name2
"Jagjit Roberton"
:name :last_name2
"Sgnit Robertson"
:last_name :last_name2
我做了我的控制器,模型和视图,但似乎我有SQL注入问题,但我希望代码解决方案没有宝石,请有人可以编辑这个或帮助我解决这个问题???我搜索了许多帖子和解决方案,但是使用宝石
***************HERE IS MY CONTROLLER****************
Here some people told me that my code has vulnerability
is there any other way to make this code more cheape without write 24 conditions????
class ProjectsController < ApplicationController
def index
@projects = Project.find(:all, :conditions => "(
name LIKE \"#{params[:query]}%\" OR
name2 LIKE \"#{params[:query]}%\" OR
last_name LIKE \"#{params[:query]}%\"OR
last_name2 LIKE \"#{params[:query]}%\" OR
(concat(name, \" \", last_name) LIKE \"#{params[:query]}%\") OR
(concat(name, \" \", name2 ) LIKE \"#{params[:query]}%\") OR
(concat(last_name, \" \", last_name2) LIKE \"#{params[:query]}%\") OR
(concat(name, \" \", name2, \" \",last_name, \" \",last_name2) LIKE \"#{params[:query]}%\") OR
(concat(name, \" \", name2, \" \",last_name) LIKE \"#{params[:query]}%\")
)")
end
end
这是我的模型是空的我需要帮助,请在其他示例或添加内容
*****HERE IS MY MODEL***************
class Project < ActiveRecord::Base
end
这是我的观点,实际上它正在运行并且有24个条件,我需要解决漏洞问题的技巧而且没有写很多条件
************HERE IS MY VIEW **************
<form name="search-form" id="search-form">
<%= text_field_tag "query", params[:query], :autocomplete => 'on' %>
</form>
答案 0 :(得分:0)
好的...现在,如果您的搜索字符串很复杂,您可以使用名为Squeel的宝石..
例如,
name LIKE \"#{params[:query]}%\"
将成为name.like_any params[:query]
查看Git中心页面......他们有很多关于如何使用Squeel的例子......