关系用户 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" 不明确
关系用户 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" 不明确
该错误消息意味着您在用户中有一个名为 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 个。