【问题标题】:activerecord - getting the most popular categoryactiverecord - 获得最受欢迎的类别
【发布时间】:2014-04-04 05:25:10
【问题描述】:

我有一个模型 Category 和类方法 Tickets_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

我的方法不起作用。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多