我目前有一个有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
我的问题是如何吸引顶级用户。
答案 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