假设我使用Rails和MySQL的博客应用程序Posts
和Comments
。
我想根据评论数量对帖子进行排名。 (注意:不仅仅是排序,而是获得他们实际的第1,第2,第3等级)。
另外,鉴于帖子,我希望能够在不将所有帖子加载到Rails并搜索它们的情况下获得它的排名。
e.g。 “这篇文章按评论数排名第372位”
最后,如果两个帖子的评论数量相同,那么它们应该具有相同的排名 - 所以关联是可以的。
我在MySQL中似乎有一些聪明的解决方案,例如这篇文章: How do I Handle Ties When Ranking Results in MySQL?
我想知道是否有一个更简单的解决方案,通过规范化帖子表中附加字段中的一些数据。
有没有人看到过这方面的好方法?
答案 0 :(得分:2)
更多地考虑这个问题,我认为您可以通过几种不同的方式添加此功能。
您可以将Redis添加到混音中,并使用其排序集功能以及此帖中的最高分示例http://jimneath.org/2011/03/24/using-redis-with-ruby-on-rails.html
在我看来,这可能是最好的设计。您将分析部分与数据收集部分分开,并使用redis最好的方式。
另一种方法是创建一个记录post_id和注释计数的PostRanking模型。您可以在此处设置默认范围,以按降序排列评论数量并轻松查询。
答案 1 :(得分:0)
此问题看起来与:counter_cache
关联选项的示例相同。