如何获得记录中的最高关联

时间:2015-04-14 08:25:20

标签: ruby-on-rails ruby-on-rails-3

我目前有一个有Post类的rails应用程序。发布belongs_to用户。

如何获得发布很多的前3位用户?我猜它在哪里

 Post.all.users.(do something here to get the user count and know who are the top 3

好的只是更新,因为.all可能会令人困惑。在某些情况下,我需要在某一天获得顶级用户,这就像

Post.today.get_top_users

我的问题是如何吸引顶级用户。

2 个答案:

答案 0 :(得分:1)

我这样做。

User.joins(:posts).select("COUNT(posts.id) as posts_count, users.*").group('users.id').order('posts_count DESC').where('Date(posts.created_at) = ?', Date.today).limit(3)

答案 1 :(得分:0)

试试这个 的修改

User.select('users.*, count(posts.id) AS posts_count').joins(:posts).where('posts.created_at = ?', Time.now).group('users.id').order('posts_count DESC').limit(3)

使用counter_cache会更快。定义一个类方法 将counter_cache: true添加到model

def self.get_top_users
    select('users.*, COUNT(posts.id) AS posts_count')
      joins(:users).where('posts.created_at = ?', Time.now).                                                  
      group('users.id').
      order('posts_count DESC').
      limit(5)
end

然后你可以打电话

Post.get_top_users