Rails如何按评论数量订购帖子 - 不返回活动记录

时间:2016-08-06 04:35:42

标签: ruby-on-rails ruby

如何根据评论数量排列帖子? (大多数评论第一)

帖子has_many评论 评论belongs_to帖子

2 个答案:

答案 0 :(得分:1)

@posts = Post.includes(:comments).order(" comments.size ASC")

答案 1 :(得分:1)

最好的解决方案是Rails counter_cache功能。它是数据库中posts表中的一个单独列,其中存储了注释数量。每次创建新评论或删除评论时,它都会自动更新。

首先,您需要在posts表中添加一列。这是迁移:

add_column:microposts,:comments_count,:integer,:default => 0,:null =>假

之后,将评论模型中的代码更改为:

belongs_to:micropost,:counter_cache =>真

在所有这些更改之后,post中的comments_count列将在每次创建新注释时递增,并在每次删除注释时递减。此外,您可以按此列的值对帖子进行排序,如下所示:

@posts = Post.order('comments_count ASC')。全部