如何通过多个值对索引页面上的记录进行排名?

时间:2011-09-24 23:51:27

标签: ruby-on-rails activerecord indexing ranking

我的应用程序中有一个场地表,这些场地显示在场地索引页面的部分位置,顶部和下降的平均场地最高:

场地管制员

  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 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

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