我的模型中有以下查询:
Post.where("created_utc > ? AND lower(category) = ?", 0, 'videos').group(:domain).order('count_all desc').page(1).per(25).count
我使用kaminari
gem进行分页,但问题是:此查询返回看似已排序的哈希值。但是我无法知道总结果数是多少。
如果您不想考虑kaminari
,可以参考以下查询:
Post.where("created_utc > ? AND lower(category) = ?", min_time, subreddit.downcase).group(:domain).order('count_all desc').limit(limit).offset(start).count
无论如何,我无法弄清楚结果的总数是多少。我该如何解决这个问题?有没有办法弄清楚没有限制的总结果集大小是什么?
答案 0 :(得分:0)
除了基于ruby的方法之外,我还会对运行单独的基于数据库的计数进行基准测试。
posts = Post.where("created_utc > ? AND lower(category) = ?", min_time, subreddit.downcase)
domain_count = posts.count("distinct domain")
result = posts.group(:domain).order('count_all desc').limit(limit).offset(start).count
答案 1 :(得分:0)
你想要的是.length
而不是.count
,如下所示:
Post.where("created_utc > ? AND lower(category) = ?", 0, 'videos').group(:domain).order('count_all desc').page(1).per(25).length
.count
执行SQL COUNT.length
计算结果数组的长度@BenHawker在https://stackoverflow.com/a/34541020/380607提供
答案 2 :(得分:0)
Kaminari提供了一种total_count
方法。 https://github.com/kaminari/kaminari/blob/master/README.md#the-per-scope
答案 3 :(得分:-1)
我会把它分成多行:
# 1. get the results
posts = Post.where("created_utc > ? AND lower(category) = ?", 0, 'videos').group(:domain).order('count_all desc')
# 2. count the total size
total_size = posts.count
# 3. use kaminari for pagination
posts_paged = posts.page(1).per(25)