Как очистить пользовательский ввод для gem акт-as-taggable-on, Ruby on Rails

На данный момент мой код выглядит так:

@events = Event.tagged_with(params[:search_input])

Но такой запрос допускает SQL-инъекции и его следует избегать.

Rubyonrails.org рассказывает нам, как избежать таких атак ( http://guides.rubyonrails.org/security.html)

Например, используя вопросительные знаки:

Model.where("login = ? AND password = ?", entered_user_name, entered_password).first

Тем не менее, я не знаю, как дезинфицировать пользовательский ввод для этого драгоценного камня. Я попробовал следующее:

@events = Event.tagged_with("?", "%#{params[:search_input]}%")

Но это приводит к следующей ошибке:

TypeError (no implicit conversion of Symbol into String):

Есть идеи, как санировать этот вклад? Заранее спасибо!

1 ответ

Решение

В этом случае acts_as_taggable_on Драгоценный камень занимается обработкой для вас. Все, что вам нужно сделать, это передать params ценность для драгоценного камня. Попробуй это:

@events = Event.tagged_with(params[:search_input])

Как правило, вы будете использовать подход, который вы пытались использовать при непосредственном взаимодействии с ActiveRecord. В этом случае, acts_as_taggable_on делает все это для вас, внутренне, используя механизм параметров запроса. Интерфейс для драгоценного камня не позволяет вам также использовать параметризацию, что и привело к ошибке.

Другие вопросы по тегам