Czy jest to podatne na wstrzykiwanie SQL?

W mojej akcji kontrolera mam następujące:

def index
    @articles = (params[:mine] == "true") ? current_user.articles : Article.search(params[:search])
    @articles = @articles.sort! { |a,b| b.created_at <=> a.created_at }
    @articles = Kaminari.paginate_array(@articles).page(params[:page]).per(25)

    respond_to do |format|
      format.html
      format.json { render json: @articles }
    end
end

A w modelu:

  def self.search(search)
    if search.present?
      where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%")
    else
      find(:all)
    end
  end

Rozumiem, że wstrzyknięcie SQL byłoby możliwe, jeśli użyjesz parametrów bezpośrednio w zapytaniu. Tutaj przekazuję parametry bezpośrednio do zapytania przezArticle.search(params[:search]). Czy jest to podatne na wstrzykiwanie SQL? Jeśli tak, jak mogę uczynić go bardziej bezpiecznym? Mam również wątpliwości, czy poprawnie napisałem kod kontrolera. Jeśli masz sugestie dotyczące zmiany kodu kontrolera, daj mi znać, a oni będą bardzo wdzięczni. Wielkie dzięki!

questionAnswers(1)

yourAnswerToTheQuestion