Fix existing specs for Exercise

This commit is contained in:
Sebastian Serth
2020-10-14 14:08:07 +02:00
parent 23a045c630
commit 4e720295d8

View File

@ -239,18 +239,18 @@ class ExercisesController < ApplicationController
private :handle_file_uploads private :handle_file_uploads
def handle_exercise_tips def handle_exercise_tips
if exercise_params return unless exercise_params && exercise_params[:tips]
begin
exercise_tips = JSON.parse(exercise_params[:tips]) begin
# Order is important to ensure no foreign key restraints are violated during delete exercise_tips = JSON.parse(exercise_params[:tips])
previous_exercise_tips = ExerciseTip.where(exercise: @exercise).select(:id).order(rank: :desc).ids # Order is important to ensure no foreign key restraints are violated during delete
remaining_exercise_tips = update_exercise_tips exercise_tips, nil, 1 previous_exercise_tips = ExerciseTip.where(exercise: @exercise).select(:id).order(rank: :desc).ids
# Destroy initializes each object and then calls a *single* SQL DELETE remaining_exercise_tips = update_exercise_tips exercise_tips, nil, 1
ExerciseTip.destroy(previous_exercise_tips - remaining_exercise_tips) # Destroy initializes each object and then calls a *single* SQL DELETE
rescue JSON::ParserError => e ExerciseTip.destroy(previous_exercise_tips - remaining_exercise_tips)
flash[:danger] = "JSON error: #{e.message}" rescue JSON::ParserError => e
redirect_to(edit_exercise_path(@exercise)) flash[:danger] = "JSON error: #{e.message}"
end redirect_to(edit_exercise_path(@exercise))
end end
end end
private :handle_exercise_tips private :handle_exercise_tips