diff --git a/app/services/order_cycle_form.rb b/app/services/order_cycle_form.rb index f83b2c57e2..87292a8a0c 100644 --- a/app/services/order_cycle_form.rb +++ b/app/services/order_cycle_form.rb @@ -8,14 +8,17 @@ class OrderCycleForm @order_cycle_params = order_cycle_params @user = user @permissions = OpenFoodNetwork::Permissions.new(user) + @schedule_ids = order_cycle_params.delete(:schedule_ids) end def save - build_schedule_ids + schedule_ids = build_schedule_ids order_cycle.assign_attributes(order_cycle_params) return false unless order_cycle.valid? order_cycle.transaction do + order_cycle.save! + order_cycle.schedule_ids = schedule_ids order_cycle.save! apply_exchange_changes sync_subscriptions @@ -42,7 +45,7 @@ class OrderCycleForm end def schedule_ids? - order_cycle_params[:schedule_ids].present? + @schedule_ids.present? end def build_schedule_ids @@ -51,7 +54,7 @@ class OrderCycleForm result = existing_schedule_ids result |= (requested_schedule_ids & permitted_schedule_ids) # Add permitted and requested result -= ((result & permitted_schedule_ids) - requested_schedule_ids) # Remove permitted but not requested - order_cycle_params[:schedule_ids] = result + result end def sync_subscriptions @@ -70,7 +73,7 @@ class OrderCycleForm end def requested_schedule_ids - order_cycle_params[:schedule_ids].map(&:to_i) + @schedule_ids.map(&:to_i) end def permitted_schedule_ids