diff --git a/app/logical/post_sets/post.rb b/app/logical/post_sets/post.rb index 50ff5990f..9609a214b 100644 --- a/app/logical/post_sets/post.rb +++ b/app/logical/post_sets/post.rb @@ -32,7 +32,7 @@ module PostSets raise SearchError.new("Upgrade your account to search more than two tags at once") end - @posts ||= ::Post.tag_match(tag_string).paginate(page) + @posts ||= ::Post.tag_match(tag_string).paginate(page, :count => Post.fast_count(tag_string)) rescue ::Post::SearchError @posts = ::Post.where("false") end diff --git a/lib/danbooru/paginator/active_record_extension.rb b/lib/danbooru/paginator/active_record_extension.rb index 6101a934c..ca5da06f6 100644 --- a/lib/danbooru/paginator/active_record_extension.rb +++ b/lib/danbooru/paginator/active_record_extension.rb @@ -6,7 +6,9 @@ module Danbooru extend ActiveSupport::Concern module ClassMethods - def paginate(page) + def paginate(page, options = {}) + @paginator_options = options + if use_sequential_paginator?(page) paginate_sequential(page) else @@ -69,6 +71,8 @@ module Danbooru # taken from kaminari (https://github.com/amatsuda/kaminari) def total_count + return @paginator_options[:count] if @paginator_options[:count] + c = except(:offset, :limit, :order) c = c.reorder(nil) c = c.count