2013-07-06 20 views

回答

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。

+0

order(「count(kits.id)desc」)起作用。是的,我從group_by中刪除了kits.id,謝謝你打我。但仍然沒有得到爲什麼不能使用別名。 –

+0

錯誤提示有多個列從查詢中投影出來,名爲「kits_count」 - 在users表中是否有該列名稱? –

+0

雙重檢查一切User.column_names.include?(「kits_count」)爲false,Kit.column_names.include?(「kits_count」)爲false。並沒有其他協會,雖然第三表或類似的東西。 –