Во-первых, .order("#{@sort} DESC")
не очень хорошая идея, когда @sort
берется прямо из параметров.Было бы лучше использовать .order('? DESC', @sort)
.
http://guides.rubyonrails.org/security.html#sql-injection
Я не уверен, правильно ли я прочитал ваш вопрос, но я предполагаю, что вы хотите, чтобы created_at
было значением по умолчаниюордер с другими допустимыми параметрами: ratings
и rating
.
@order = case params[:sort]
when 'ratings'
'ratings DESC'
when 'rating'
'rating DESC'
else # anything else
'created_at DESC'
end
@konkurrencer = Konkurrencer.where("id NOT IN(?)", @clicked).order(@order)