Это склонно к инъекции SQL?

В моем действии контроллера у меня есть следующее:

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

И в модели:

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

Я понимаю, что SQL-инъекция была бы возможна, если бы вы использовали параметры непосредственно в запросе. Здесь я передаю параметры непосредственно в запрос where черезArticle.search(params[:search]), Это склонно к инъекции SQL? Если это так, как я могу сделать его более безопасным? У меня также есть сомнения, правильно ли я написал код контроллера. Если у вас есть предложения по рефакторингу кода контроллера, пожалуйста, дайте мне знать, и они будут вам очень благодарны. Большое спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос