Rails:阻止will_paginate调用ActiveRelation的#count

sin*_*ina 7 ruby activerecord ruby-on-rails will-paginate

当我传递will_paginate一个ActiveRelation时,它总是调用它的#count方法并命中数据库以找出项目的总数.但是这个操作需要时间,我已经缓存并准备好总数.我可以将此预先计算的计数传递给will_paginate并阻止其访问数据库吗?

我尝试了该:count选项,但它作为选项传递给ActiveRecord:

active_relation.paginate(page: 2, per_page: 100, count: total_count)
Run Code Online (Sandbox Code Playgroud)

谢谢!:)

sin*_*ina 11

通过缓存计数:total_entries解决了问题:

active_relation.paginate(page: 2, per_page: 100, total_entries: total_count)
Run Code Online (Sandbox Code Playgroud)