0

关系用户 has_many :kits

用户模型和命名范围:

  scope :top5_users,
    joins(:kits).
    select("users.*, count(kits.id) AS kits_count").
    group("users.id, kits.id").
    order("kits_count DESC").
    limit(5)

获取 PG::Error: ERROR: ORDER BY "kits_count" 不明确

4

1 回答 1

2

该错误消息意味着您在用户中有一个名为 kits_count 的列,可能由回调维护。如果是这样,您可以更轻松地:

scope :top5_users,
    order("kits_count DESC").
    limit(5)

如果不 ...

RDBMS 供应商对列别名的支持混杂在一起,您可能会使用:

order("count(kits.id) desc")

如果您知道列号,您可以:

scope :top5_users,
    joins(:kits).
    select("count(kits.id) AS kits_count, users.*").
    group("users.id").
    order("1 DESC").
    limit(5)

将 kits.id 从组中取出,否则每次计数都会得到 1 个。

于 2013-07-06T06:49:19.957 回答