问题
When I pass will_paginate
an ActiveRelation, it always calls its #count method and hits the database to find out the total number of items. But this operation takes time and I have the total number already cached and ready. Can I pass this pre-calculated count to will_paginate
and stop it from hitting the database?
I tried the :count
option, but it is passed to ActiveRecord as an option:
active_relation.paginate(page: 2, per_page: 100, count: total_count)
Thanks! :)
回答1:
Passing the cached count with :total_entries
solves the problem:
active_relation.paginate(page: 2, per_page: 100, total_entries: total_count)
来源:https://stackoverflow.com/questions/26696731/rails-prevent-will-paginate-from-calling-count-of-activerelation