我有一个模型类和类方法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
我的方法不起作用。
答案 0 :(得分:1)
以下有效记录查询可以满足您的需求。不确定是否有更清洁的方法。
Category.select("categories.*, COUNT(tickets.id) AS t_count").joins(:tickets).group("categories.id").order("t_count DESC").limit(3)