-2

3.5 и рубин 1.8.7ПОИСК ПОЛЯ КОЛОННЫ РЕЛЬСЫ

Я хочу знать, как создать несколько поле поиска, используя только 1 текстовое поле также можно найти 4 колонки из той же таблицы (имя, 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 инъекции, но я хочу, чтобы код решения нет драгоценных камней, пожалуйста, кто-то может изменить это или помочь мне с этой проблемой ??? я искал много постов и решения, но для рельсов 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

Почему вы хотите избежать использования драгоценных камней? –

+0

Как насчет, по крайней мере, вы не просто заставляете params в строку ??? И если это ваши условия поиска, это ваши условия поиска. –

+0

Знаете ли вы код? как вы можете это решить? –

ответ

0

OK ... Теперь, если ваша строка поиска компло ех, вы можете использовать камень под названием Squeel ..

Checkout Squeel..

, например,

name LIKE \"#{params[:query]}%\" станет name.like_any params[:query]

Посмотрите на странице хаба Гита ... у них есть много примеров о том, как использовать Squeel ...

Смежные вопросы