Mysql Rails ActiveRecord-选择评论最多的用户

Mysql Rails ActiveRecord-选择评论最多的用户,mysql,ruby-on-rails,ruby,sqlite,activerecord,Mysql,Ruby On Rails,Ruby,Sqlite,Activerecord,我想选择评论最高的用户 这些评论是有关联的 我可以通过以下方式查询: User.first.comments 现在我想选择评论最多的用户 我不想遍历整个用户表,因为这非常耗时 也许是这样的: User.joins(:comments).find(:all, :order => "COUNT(comments) desc") User.order( "comments_count desc" ).limit(10).all 但这是行不通的 如果没有解决方案,我会将它们缓存在外部表中。您

我想选择评论最高的用户

这些评论是有关联的

我可以通过以下方式查询:

User.first.comments
现在我想选择评论最多的用户

我不想遍历整个用户表,因为这非常耗时

也许是这样的:

User.joins(:comments).find(:all, :order => "COUNT(comments) desc")
User.order( "comments_count desc" ).limit(10).all
但这是行不通的


如果没有解决方案,我会将它们缓存在外部表中。

您应该使用计数器缓存,下面是一个示例:

class User < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :user, :counter_cache => true
end

为此,您应该使用计数器缓存,下面是一个示例:

class User < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :user, :counter_cache => true
end