通过关联计数另一个模型,限制为1

时间:2014-08-23 01:51:03

标签: ruby-on-rails

我想展示一个杂志库,展示每个杂志标题的最新版本,但是根据该杂志的订阅数量排序。我提出了这个问题

class IssuesController < ApplicationController
    def index
      @issues = Issue
        .includes(:magazine)
        .order('magazines.subscriptions_count DESC')
        .order(:release)
        .paginate(page: @page, per_page: 25)
    end
end

它正确地通过suscriptions_count命令它们,但是每个杂志有很多条目,每个问题都按顺序显示。我只想要每个人的第一本杂志。我已尝试将uniq添加到查询group(:magazine_id)limit(1)等等,但我无法将其显示为每个杂志标题只显示一个问题。

1 个答案:

答案 0 :(得分:0)

我找到了这个答案PostgreSQL -must appear in the GROUP BY clause or be used in an aggregate function

引导我select("DISTINCT_ON('magazine_id') *")。效果很好,只为每个magazine_id

显示一个条目
def index
  @issues = Issue
    .includes(:magazine)
    .select("DISTINCT ON (magazine_id, magazines.subscriptions_count) *")
    .order('comics.subscriptions_count DESC')
    .paginate(page: @page, per_page: 25)
end