Skip to content

Commit

Permalink
Preload kaminari collections to avoid counting (#1)
Browse files Browse the repository at this point in the history
Co-authored-by: Shanon McQuay <hi@shan.dog>
  • Loading branch information
Igor Kapkov and compactcode authored Dec 17, 2020
1 parent df05199 commit 680c801
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/api-pagination.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,18 @@ def paginate_with_kaminari(collection, options, paginate_array_options = {})

collection = Kaminari.paginate_array(collection, paginate_array_options) if collection.is_a?(Array)
collection = collection.page(options[:page]).per(options[:per_page])

if !collection.is_a?(Array)
if ApiPagination.config.include_total
# Preload to avoid counting if we are on the last page.
#
# See: https://github.com/kaminari/kaminari/blob/cd8601cc42b67267c15a13174bc2fc9bd5de1032/kaminari-activerecord/lib/kaminari/activerecord/active_record_relation_methods.rb#L20-L26
collection.load
else
collection.without_count
end
end

collection.without_count if !collection.is_a?(Array) && !ApiPagination.config.include_total
[collection, nil]
end
Expand Down

0 comments on commit 680c801

Please sign in to comment.