Как я могу ранжировать записи на странице индекса по нескольким значениям? - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть таблица мест в моем приложении, которые отображаются на странице индекса мест в паролях с самыми высокими средними оценками мест сверху и снизу:

контроллер мест

  def index
    if
      @venues = Venue.order("average_rating DESC").all
    else
      @venues = Venue.all
    end
    @venues = @venues.paginate :per_page => 15, :page => params[:page]
  end

Я только что позволил некоторым местам быть свободными, а некоторые - премиальными:

venue.rb

  PLANS = %w[free premium]

edit.html.erb

  <%= f.collection_select :plan, Venue::PLANS, :to_s, :humanize %></p>

Как сделать так, чтобы все места премиум-класса отображались над свободными площадками, даже если они имеют более низкий средний рейтинг?

Спасибоочень за любую помощь, она очень ценится!

1 Ответ

2 голосов
/ 25 сентября 2011

Примерно так должно работать:

@venues = Venue.order("case plan when 'premium' then 1 else 0 end desc, average_rating DESC").all
...