From 47f9a3f08a7acd149d1df498cd0e8512bcef497b Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Tue, 5 Jan 2021 18:51:24 +0000 Subject: [PATCH] Add guard clause and remove conditionals Sometimes the objects are not paginated. In this case we need to avoid trying to render pagination data, as it will throw an error. This guard clause also means we can remove messy conditionals from several controllers. --- app/controllers/admin/bulk_line_items_controller.rb | 5 ++++- app/controllers/api/exchange_products_controller.rb | 2 +- app/controllers/api/orders_controller.rb | 2 +- app/controllers/concerns/pagination_data.rb | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/bulk_line_items_controller.rb b/app/controllers/admin/bulk_line_items_controller.rb index b89b08740b..179c400f76 100644 --- a/app/controllers/admin/bulk_line_items_controller.rb +++ b/app/controllers/admin/bulk_line_items_controller.rb @@ -15,7 +15,10 @@ module Admin @line_items = @line_items.page(page).per(params[:per_page]) if pagination_required? - render json: { line_items: serialized_line_items, pagination: (pagination_required? ? pagination_data(@line_items) : nil) } + render json: { + line_items: serialized_line_items, + pagination: pagination_data(@line_items) + } end # PUT /admin/bulk_line_items/:id.json diff --git a/app/controllers/api/exchange_products_controller.rb b/app/controllers/api/exchange_products_controller.rb index 6b9150b4ac..5b2e0f154d 100644 --- a/app/controllers/api/exchange_products_controller.rb +++ b/app/controllers/api/exchange_products_controller.rb @@ -86,7 +86,7 @@ module Api render json: { products: serialized_products, - pagination: pagination_required? ? pagination_data(paginated_products) : nil + pagination: pagination_data(paginated_products) } end end diff --git a/app/controllers/api/orders_controller.rb b/app/controllers/api/orders_controller.rb index 8f74933724..b1cbf222f7 100644 --- a/app/controllers/api/orders_controller.rb +++ b/app/controllers/api/orders_controller.rb @@ -16,7 +16,7 @@ module Api render json: { orders: serialized_orders(orders), - pagination: pagination_required? ? pagination_data(orders) : nil + pagination: pagination_data(orders) } end diff --git a/app/controllers/concerns/pagination_data.rb b/app/controllers/concerns/pagination_data.rb index 9bbcf5eb2c..c0f588681c 100644 --- a/app/controllers/concerns/pagination_data.rb +++ b/app/controllers/concerns/pagination_data.rb @@ -4,6 +4,8 @@ module PaginationData extend ActiveSupport::Concern def pagination_data(objects) + return unless objects.respond_to? :total_count + { results: objects.total_count, pages: objects.total_pages,