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::エラー: エラー: 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 を group by から外すか、カウントごとに 1 を取得します。

于 2013-07-06T06:49:19.957 に答える