diff --git a/src/models/test.rb b/src/models/test.rb index ccc92af..8022cd6 100644 --- a/src/models/test.rb +++ b/src/models/test.rb @@ -7,7 +7,7 @@ class Test < Sequel::Model many_to_one :hardware many_to_many :benchmarks - def has_benchmark(benchmark_id) + def benchmark?(benchmark_id) return benchmarks_dataset.where(Sequel[:benchmarks][:id] => benchmark_id).any? end diff --git a/src/routes/test.rb b/src/routes/test.rb index ce0a169..5299e68 100644 --- a/src/routes/test.rb +++ b/src/routes/test.rb @@ -69,19 +69,16 @@ class GameData < Sinatra::Base description: params[:test_description] ) - # create an array of the selected benchmarks selected_benchmarks = Array(params[:test_benchmarks]) + # remove benchmarks no longer associated with the test - tst.benchmarks.each do |b| - if not selected_benchmarks.include?(b) - tst.remove_benchmark(b) - end + tst.benchmarks.dup.each do |b| + tst.remove_benchmark(b.id) unless selected_benchmarks.include?(b.id) end + # associate the benchmarks to the test selected_benchmarks.each do |b| - if not tst.has_benchmark(b) - tst.add_benchmark(b) - end + tst.add_benchmark(b) unless tst.benchmark?(b) end redirect "/test/#{tst.id}" diff --git a/views/test/edit.erb b/views/test/edit.erb index 59502e1..154ed86 100644 --- a/views/test/edit.erb +++ b/views/test/edit.erb @@ -28,7 +28,7 @@