2011-09-19 12 views
0

我正在構建一個應用程序,用戶可以在其中提交一個URL,並且我想知道在網站上總共提交了多少個特定URL,然後安排它們在按提交次數排序的列表中。通過Rails中的重複條目數量排序

任何想法?使用Rails 3.0.6

回答

0

如果你允許重複的URL,並假設你有一個Url類與url

Url.group(:url).select("urls.*,count(*) as num").order("num desc") 

如果你有獨特的網址和網址和用戶之間的連接表(這是你應該是什麼做):

Url.joins(:users).group("urls.id").select("urls.*, count(*) as num").order("num desc") 
+0

謝謝 - 使用略有不同的語法,但淨結果的作品。 – wastedhours

+0

我不認爲這個解決方案將與PostgreSQL(或任何具有嚴格SQL的數據庫)一起工作。生成的SQL將在select子句中具有不在group_by子句或聚合函數中的值。 – dkam

+0

@dkam - 你試過了嗎? – klochner

0

如果我理解的很好,你想跟蹤用戶通過表單提交的所有鏈接。

您可以使用帶有兩列的「url」(帶有索引和唯一性約束)和「count」(帶有索引)的submitted_urls表。

提交新鏈接時,請讓您的控制器檢查表中是否存在網址;如果沒有,創建它,否則增加與這個URL關聯的計數器。

列出您的鏈接現在就像查詢此表的順序('count DESC')子句一樣簡單,並且計算鏈接總數只是count()的問題。

如果我沒有很好地理解,這意味着您想爲您的網站實施某種分析儀表板;那爲什麼不用google analytics呢?