From ff4d7fbc45f9ef303cedff64fc0ca710e11a48e2 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Fri, 12 Jun 2020 13:23:12 +0200 Subject: [PATCH] Refactor with Arel to perform a single query --- app/services/order_tax_adjustments_fetcher.rb | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/services/order_tax_adjustments_fetcher.rb b/app/services/order_tax_adjustments_fetcher.rb index debce057b8..085119172c 100644 --- a/app/services/order_tax_adjustments_fetcher.rb +++ b/app/services/order_tax_adjustments_fetcher.rb @@ -22,13 +22,22 @@ class OrderTaxAdjustmentsFetcher def all Spree::Adjustment .with_tax - .where(adjustable_id: order.id, adjustable_type: 'Spree::Order') - .order('created_at ASC') + + .where(order_adjustments.or(line_item_adjustments)) + .order('created_at ASC') + end - Spree::Adjustment - .with_tax - .where(adjustable_id: order.line_item_ids, adjustable_type: 'Spree::LineItem') - .order('created_at ASC') + def order_adjustments + table[:adjustable_id].eq(order.id) + .and(table[:adjustable_type].eq('Spree::Order')) + end + + def line_item_adjustments + table[:adjustable_id].eq(order.line_item_ids.join(',')) + .and(table[:adjustable_type].eq('Spree::LineItem')) + end + + def table + @table ||= Spree::Adjustment.arel_table end def tax_rates_hash(adjustment)