From da3eea60050fa7b7e3f86c08b2a195fb8174207e Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Sat, 25 Jun 2022 12:44:43 +0100 Subject: [PATCH] Fetch shared shipping/payment methods for order cycle checkout options in single query --- app/helpers/admin/order_cycles_helper.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/helpers/admin/order_cycles_helper.rb b/app/helpers/admin/order_cycles_helper.rb index c046ded504..6bc3fea258 100644 --- a/app/helpers/admin/order_cycles_helper.rb +++ b/app/helpers/admin/order_cycles_helper.rb @@ -3,15 +3,17 @@ module Admin module OrderCyclesHelper def order_cycle_shared_payment_methods(order_cycle) - order_cycle.attachable_payment_methods.select do |payment_method| - (payment_method.distributor_ids & order_cycle.distributor_ids).many? - end + order_cycle.attachable_payment_methods. + where("distributor_id IN (?)", order_cycle.distributors.select(:id)). + group("spree_payment_methods.id"). + having("COUNT(DISTINCT(distributor_id)) > 1") end def order_cycle_shared_shipping_methods(order_cycle) - order_cycle.attachable_shipping_methods.select do |shipping_method| - (shipping_method.distributor_ids & order_cycle.distributor_ids).many? - end + order_cycle.attachable_shipping_methods. + where("distributor_id IN (?)", order_cycle.distributors.select(:id)). + group("spree_shipping_methods.id"). + having("COUNT(DISTINCT(distributor_id)) > 1") end end end