-2
3.5和Ruby 1.8.7搜索字段列鋼軌
我想知道如何只用1文本字段也可以從同一個表中搜索4列(創建多個搜索字段名,姓名2,姓氏, 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注入的問題,但我想要的代碼的解決方案沒有寶石,請人可以編輯這個或幫助我解決這個問題???我搜索很多帖子和解決方案,但對軌道3使用寶石
***************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>
爲什麼你想避免使用寶石? – 2013-08-28 21:57:42
至少你不只是將params推入一個字符串?如果這些是你的搜索條件,這些就是你的搜索條件。 –
你知道代碼嗎?你怎麼解決這個問題? –