我有一个posts
数组。我想按照posts
的数量排序comments
这个数组(数组中的第一个对象是大多数注释,最后一个是最少的)。 Post
有很多comments
。这似乎是一个简单的问题,但我无法弄清楚如何订购它们。我试过了,我不相信可以通过order
方法实现这一点。有一个我不知道的Rails方法吗?或者我必须回家滚吗?提前谢谢!
PS:我对帖子的评论关系是多态的Comment
- (belongs_to :threadable
)
答案 0 :(得分:3)
您可以使用复杂的活动记录查询执行此操作,但是,到目前为止最简单的方法是在关联上添加:counter_cache
。您只需在Post模型上添加一个名为comments_count
的字段,然后在评论模型中添加:
belongs_to :post, counter_cache: true
然后,因为它只是像你所有其他列一样的列,你可以通过它订购。
答案 1 :(得分:0)
最简单的方法可能是使用counter_cache
选项
见:
-
class Comment
belongs_to :post, counter_cache: true
end
将列comments_count
添加到posts数据库表,然后按
答案 2 :(得分:0)
实现它的最佳方法是使用计数器缓存功能。您需要将整数列添加到名为posts
的{{1}}表中。然后在您的评论模型中,您需要将comments_count
关联更改为:
post
Rails将处理comments_count列以显示与给定帖子关联的评论数量。然后,您可以使用此列进行排序。