From 4e720295d864e8c471ae004a51942bb1d13898ce Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Wed, 14 Oct 2020 14:08:07 +0200 Subject: [PATCH] Fix existing specs for Exercise --- app/controllers/exercises_controller.rb | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index b1cfa11d..5ae89f93 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -239,18 +239,18 @@ class ExercisesController < ApplicationController private :handle_file_uploads def handle_exercise_tips - if exercise_params - begin - exercise_tips = JSON.parse(exercise_params[:tips]) - # Order is important to ensure no foreign key restraints are violated during delete - previous_exercise_tips = ExerciseTip.where(exercise: @exercise).select(:id).order(rank: :desc).ids - remaining_exercise_tips = update_exercise_tips exercise_tips, nil, 1 - # Destroy initializes each object and then calls a *single* SQL DELETE - ExerciseTip.destroy(previous_exercise_tips - remaining_exercise_tips) - rescue JSON::ParserError => e - flash[:danger] = "JSON error: #{e.message}" - redirect_to(edit_exercise_path(@exercise)) - end + return unless exercise_params && exercise_params[:tips] + + begin + exercise_tips = JSON.parse(exercise_params[:tips]) + # Order is important to ensure no foreign key restraints are violated during delete + previous_exercise_tips = ExerciseTip.where(exercise: @exercise).select(:id).order(rank: :desc).ids + remaining_exercise_tips = update_exercise_tips exercise_tips, nil, 1 + # Destroy initializes each object and then calls a *single* SQL DELETE + ExerciseTip.destroy(previous_exercise_tips - remaining_exercise_tips) + rescue JSON::ParserError => e + flash[:danger] = "JSON error: #{e.message}" + redirect_to(edit_exercise_path(@exercise)) end end private :handle_exercise_tips