如何根据评论数量排列帖子? (大多数评论第一)
帖子has_many评论 评论belongs_to帖子
答案 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')。全部