2011-04-12 107 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和评论数。您可以将默认范围设置为按降序排列评论数量并轻松查询。

相关问题