From 074b66bf274e0fdc5ce1e2d9f43693cb03dc0e72 Mon Sep 17 00:00:00 2001 From: evazion Date: Sat, 14 Apr 2018 10:53:23 -0500 Subject: [PATCH] pagination: prefer `extending` over `extend. The `extending` method is the preferred way to add methods to an ActiveRecord collection. * http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-extending * https://ruby-doc.org/core-2.5.0/Object.html#method-i-extend --- .../paginator/active_record_extension.rb | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/app/logical/danbooru/paginator/active_record_extension.rb b/app/logical/danbooru/paginator/active_record_extension.rb index 667c8dc73..1e9488495 100644 --- a/app/logical/danbooru/paginator/active_record_extension.rb +++ b/app/logical/danbooru/paginator/active_record_extension.rb @@ -37,17 +37,17 @@ module Danbooru c = c.where("#{table_name}.id < ?", before_id.to_i) end - c.reorder("#{table_name}.id desc").tap do |obj| - obj.extend(SequentialCollectionExtension) - obj.sequential_paginator_mode = :before - end + c = c.reorder("#{table_name}.id desc") + c = c.extending(SequentialCollectionExtension) + c.sequential_paginator_mode = :before + c end def paginate_sequential_after(after_id) - limit(records_per_page + 1).where("#{table_name}.id > ?", after_id.to_i).reorder("#{table_name}.id asc").tap do |obj| - obj.extend(SequentialCollectionExtension) - obj.sequential_paginator_mode = :after - end + c = limit(records_per_page + 1).where("#{table_name}.id > ?", after_id.to_i).reorder("#{table_name}.id asc") + c = c.extending(SequentialCollectionExtension) + c.sequential_paginator_mode = :after + c end def paginate_numbered(page) @@ -57,8 +57,7 @@ module Danbooru raise ::Danbooru::Paginator::PaginationError.new("You cannot go beyond page #{Danbooru.config.max_numbered_pages}. Please narrow your search terms.") end - limit(records_per_page).offset((page - 1) * records_per_page).tap do |obj| - obj.extend(NumberedCollectionExtension) + extending(NumberedCollectionExtension).limit(records_per_page).offset((page - 1) * records_per_page).tap do |obj| if records_per_page > 0 obj.total_pages = (obj.total_count.to_f / records_per_page).ceil else