2011-04-12 104 views
1

假設我有使用Rails和MySQL的博客應用程序的PostsComments什麼是在rails中排名模型的最佳方式

我想按評論數排名帖子。 (注意:不只是排序,而是獲得他們實際的第一,第二和第三等級)。

另外,給一篇文章,我希望能夠得到它的等級,而不需要加載所有的帖子到Rails中並搜索它們。

例如「這篇文章的評論數排名#372」

最後,如果兩個帖子的評論數量相同,他們應該有相同的評級 - 所以關係是好的。

我似乎已經在MySQL這一些聰明的解決方案,比如這個帖子: How do I Handle Ties When Ranking Results in MySQL?

我不知道是否有通過對帖子正常化的一些數據中的附加字段簡單的解決方案表。

有沒有人看到過這個好方法?

+0

定義等級。您可以隨時在帖子的緩存列中緩存評論數量,並搜索最大評論數量,但如果沒有更詳細的排名要求,我無法想到其他任何內容。 – 2011-04-12 11:25:13

回答

2

想更多地瞭解這一點,我認爲有幾種不同的方法可以添加此功能。

您可以添加Redis的進來,並在這個崗位使用它的有序集合功能ALA得分最高例如,http://jimneath.org/2011/03/24/using-redis-with-ruby-on-rails.html

這很可能是最好的設計,在我看來。您將分析部分與數據收集部分分開,並使用redis最擅長的部分。

另一種方法是創建PostRanking模型,記錄post_id和評論數。您可以將默認範圍設置爲按降序排列評論數量並輕鬆查詢。

相關問題