From c50fa1224bceb17b0562701e137462dfe3a53014 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Tue, 29 Jan 2019 09:39:15 +0100 Subject: [PATCH] Do not restore adjustments that got deleted If something in the block deleted the adjustment update_attribute will fail. --- app/controllers/spree/orders_controller_decorator.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/controllers/spree/orders_controller_decorator.rb b/app/controllers/spree/orders_controller_decorator.rb index 397b7b966c..4aea409444 100644 --- a/app/controllers/spree/orders_controller_decorator.rb +++ b/app/controllers/spree/orders_controller_decorator.rb @@ -143,17 +143,15 @@ Spree::OrdersController.class_eval do # adjustments that might get created in the yielded block. def with_open_adjustments previous_states = @order.adjustments.each_with_object({}) do |adjustment, hash| - hash[adjustment.id] = { adjustment: adjustment, previous_state: adjustment.state } + hash[adjustment.id] = adjustment.state end @order.adjustments.each(&:open) yield - previous_states.each do |adjustment_id, adjustment_pair| - adjustment = adjustment_pair[:adjustment] - previous_state = adjustment_pair[:previous_state] - - adjustment.update_attribute(:state, previous_state) + @order.adjustments.each do |adjustment| + previous_state = previous_states[adjustment.id] + adjustment.update_attribute(:state, previous_state) if previous_state end end