2016-02-16 6 views
1

Мне нужно учесть всю полноту поиска MySQL в моем приложении Rails 4.2. Поэтому мне нужен псевдоним (уместность) в предложении select.Как использовать '?' символ в MySQL в Ruby On Rails?

Проблема заключается в использовании '?' символ, как и в пункте где, но в избранных:

Model.select("articles.*, MATCH (name) AGAINST (? IN BOOLEAN MODE) AS pertinence", @search).where(...).order("pertinence DESC") 

Если я:

Model.select('articles.*, MATCH (name) AGAINST ("' + @search + '" IN BOOLEAN MODE) AS pertinence').where(...).order("pertinence DESC") 

я могу иметь проблемы с кавычками в @search (без санитарной обработки) и инъекции SQL.

Как выполнить такие запросы с помощью Active Record?

Thanks

ответ

1

Вы можете вручную дезинфицировать параметр поиска.

search_param = ActiveRecord::Base::sanitize(@search) 

Model.select("articles.*, MATCH (name) AGAINST (#{search_param} IN BOOLEAN MODE) AS pertinence").where(...).order("pertinence DESC") 
+0

Отлично. Это сработало ! –