在 Rails 应用程序中,我想获取所有用户,按他们的评论数排序,以获得前十名评论者。我具体该怎么做?
在我的模型中,User 和 Comment 彼此处于 HABTM 关系中。
现在我有:
all_users = User.all :joins => :comments
all_users.sort_by do |user|
user.comments.count
end
我仍然坚持这样一个事实,即这会为一个用户提供多个条目,因为一个用户可能有多个评论。而且我仍然必须只获得前十个用户。
执行此操作的更有效方法是什么,例如在查询本身?
谢谢
最佳答案
如果 Comment 模型中的 belongs_to :user
配置如下:
belongs_to :user, :counter_cache => true
然后您的 users
表中有一个默认为 0 的 comments_count
整数字段,然后您就可以按它进行排序,而不必进行连接。
关于sql - 选择所有用户,按评论数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427844/