什么是在轨道中对模型进行排名的最佳方法

时间:2011-04-12 01:21:36

标签: mysql ruby-on-rails ranking rank

假设我使用Rails和MySQL的博客应用程序PostsComments

我想根据评论数量对帖子进行排名。 (注意:不仅仅是排序,而是获得他们实际的第1,第2,第3等级)。

另外,鉴于帖子,我希望能够在不将所有帖子加载到Rails并搜索它们的情况下获得它的排名。

e.g。 “这篇文章按评论数排名第372位”

最后,如果两个帖子的评论数量相同,那么它们应该具有相同的排名 - 所以关联是可以的。

我在MySQL中似乎有一些聪明的解决方案,例如这篇文章: How do I Handle Ties When Ranking Results in MySQL?

我想知道是否有一个更简单的解决方案,通过规范化帖子表中附加字段中的一些数据。

有没有人看到过这方面的好方法?

2 个答案:

答案 0 :(得分:2)

更多地考虑这个问题,我认为您可以通过几种不同的方式添加此功能。

您可以将Redis添加到混音中,并使用其排序集功能以及此帖中的最高分示例http://jimneath.org/2011/03/24/using-redis-with-ruby-on-rails.html

在我看来,这可能是最好的设计。您将分析部分与数据收集部分分开,并使用redis最好的方式。

另一种方法是创建一个记录post_id和注释计数的PostRanking模型。您可以在此处设置默认范围,以按降序排列评论数量并轻松查询。

答案 1 :(得分:0)

此问题看起来与:counter_cache关联选项的示例相同。

Take a look.