在Rails应用程序中,我想获取按评论次数排序的所有用户,以获得前十名评论者。具体来说,我该怎么做?
在我的模型中,User和Comment彼此处于HABTM关系。
现在我有:
all_users = User.all :joins => :comments
all_users.sort_by do |user|
user.comments.count
end
我仍然坚持这样一个事实:它为一个用户提供了多个条目,因为一个用户可能有多个评论。我仍然需要获得前十位用户。
执行此操作的更有效方法,例如在查询本身?
由于
答案 0 :(得分:3)
如果评论模型中的belongs_to :user
配置如下:
belongs_to :user, :counter_cache => true
然后你的comments_count
表中有一个users
整数字段默认为0,那么你就可以按顺序排序而不必进行连接。
答案 1 :(得分:1)
你总能做到
User.all(:joins => :comments, :group => 'users.id', :order => 'count(*)')
如果它没有达到您的数据库性能