From b915f1c586b44da37ea6b49a1c001050576b66fb Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 25 Feb 2020 01:05:32 -0600 Subject: [PATCH] Revert "application model: move pagination extension to concern." This reverts commit 7855e36d17272c2da3aebf88722c0919a426d804. Broke pagination due to incorrect memoization causing @paginator_count to be shared between requests. --- .../{concerns => }/pagination_extension.rb | 7 ------- app/models/application_record.rb | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 8 deletions(-) rename app/logical/{concerns => }/pagination_extension.rb (91%) diff --git a/app/logical/concerns/pagination_extension.rb b/app/logical/pagination_extension.rb similarity index 91% rename from app/logical/concerns/pagination_extension.rb rename to app/logical/pagination_extension.rb index 730dcde6a..27963ac5b 100644 --- a/app/logical/concerns/pagination_extension.rb +++ b/app/logical/pagination_extension.rb @@ -3,13 +3,6 @@ module PaginationExtension attr_accessor :current_page, :records_per_page, :paginator_count, :paginator_mode - def paginated_search(params, defaults: {}, count_pages: params[:search].present?) - search_params = params.fetch(:search, {}).permit! - search_params = defaults.merge(search_params).with_indifferent_access - - search(search_params).paginate(params[:page], limit: params[:limit], search_count: count_pages) - end - def paginate(page, limit: nil, count: nil, search_count: nil) @records_per_page = limit || Danbooru.config.posts_per_page @records_per_page = @records_per_page.to_i.clamp(1, 1000) diff --git a/app/models/application_record.rb b/app/models/application_record.rb index b480a5b7e..8f9f94579 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -4,7 +4,21 @@ class ApplicationRecord < ActiveRecord::Base include Mentionable extend HasBitFlags extend Searchable - extend PaginationExtension + + concerning :PaginationMethods do + class_methods do + def paginate(*args, **options) + extending(PaginationExtension).paginate(*args, **options) + end + + def paginated_search(params, defaults: {}, count_pages: params[:search].present?) + search_params = params.fetch(:search, {}).permit! + search_params = defaults.merge(search_params).with_indifferent_access + + search(search_params).paginate(params[:page], limit: params[:limit], search_count: count_pages) + end + end + end concerning :PrivilegeMethods do class_methods do