-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> 
+0

爲什麼你想避免使用寶石? – 2013-08-28 21:57:42

+0

至少你不只是將params推入一個字符串?如果這些是你的搜索條件,這些就是你的搜索條件。 –

+0

你知道代碼嗎?你怎麼解決這個問題? –

回答

0

OK ......現在,如果你的搜索字符串是併發症當然,你可以使用一個名爲Squeel寶石..

Checkout Squeel..

例如,

name LIKE \"#{params[:query]}%\"將成爲name.like_any params[:query]

看看Git的樞紐頁......他們有多少例子使用Squeel ...