activerecord - 获得最受欢迎的类别

时间:2014-04-03 21:09:04

标签: ruby-on-rails activerecord

我有一个模型类和类方法ticket_num,它返回属于这个类别的票数: Category.first.tickets_num#=> 2

class Category < ActiveRecord::Base
  has_many :tickets

  def tickets_num
    self.tickets.count
  end
end

我想做一个“受欢迎”的控制器方法,它会返回3个具有最高门票数量的类别,我怎样才能以最优雅的方式做到?

def popular
  @categories = Category.order(tickets_num).all.limit(3)
end

我的方法不起作用。

1 个答案:

答案 0 :(得分:1)

以下有效记录查询可以满足您的需求。不确定是否有更清洁的方法。

Category.select("categories.*, COUNT(tickets.id) AS t_count").joins(:tickets).group("categories.id").order("t_count DESC").limit(3)