From a344fdbfe6c40b11476165cd8b199f1eec300a3f Mon Sep 17 00:00:00 2001 From: albert Date: Sun, 6 Jan 2013 13:43:11 -0500 Subject: [PATCH] use fast count in post paginator --- app/logical/post_sets/post.rb | 2 +- lib/danbooru/paginator/active_record_extension.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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