关系用户has_many:套件
用户型号和命名范围:
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::错误:错误: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。