diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 9abd8f6f..e5906078 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -2,7 +2,7 @@ class ErrorsController < ApplicationController before_action :set_execution_environment def authorize! - authorize(@error || Error.where(execution_environment_id: @execution_environment.id)) + authorize(@error || @execution_environment.errors) end private :authorize! diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index cf951030..8ad4e09d 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -71,7 +71,7 @@ class ExercisesController < ApplicationController private :handle_file_uploads def implement - @submission = Submission.where(exercise_id: @exercise.id, user_id: current_user.id).order('created_at DESC').first + @submission = current_user.submissions.where(exercise_id: @exercise.id).order('created_at DESC').first @files = (@submission ? @submission.collect_files : @exercise.files).select(&:visible).sort_by(&:name_with_extension) @paths = collect_paths(@files) end diff --git a/app/controllers/hints_controller.rb b/app/controllers/hints_controller.rb index 14145e6f..3f0acf4c 100644 --- a/app/controllers/hints_controller.rb +++ b/app/controllers/hints_controller.rb @@ -28,7 +28,7 @@ class HintsController < ApplicationController private :hint_params def index - @hints = Hint.where(execution_environment_id: @execution_environment.id).order(:name) + @execution_environment.hints.order(:name) authorize! end diff --git a/app/models/submission.rb b/app/models/submission.rb index 6cd8b6fa..5a492d34 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -52,7 +52,7 @@ class Submission < ActiveRecord::Base end def siblings - Submission.where(exercise_id: exercise_id, user_id: user_id, user_type: user_type) + user.submissions.where(exercise_id: exercise_id) end def to_s diff --git a/app/policies/exercise_policy.rb b/app/policies/exercise_policy.rb index ea8fb768..1eb0ab12 100644 --- a/app/policies/exercise_policy.rb +++ b/app/policies/exercise_policy.rb @@ -22,7 +22,7 @@ class ExercisePolicy < AdminOrAuthorPolicy if @user.admin? @scope.all elsif @user.internal_user? - @scope.where("user_id = #{@user.id} OR public = TRUE OR (team_id IS NOT NULL AND team_id IN (SELECT t.id FROM teams t JOIN internal_users_teams iut ON t.id = iut.team_id WHERE iut.internal_user_id = #{@user.id}))") + @scope.where('user_id = ? OR public = TRUE OR (team_id IS NOT NULL AND team_id IN (SELECT t.id FROM teams t JOIN internal_users_teams iut ON t.id = iut.team_id WHERE iut.internal_user_id = ?))', @user.id, @user.id) else @scope.none end diff --git a/lib/whistleblower.rb b/lib/whistleblower.rb index 5d5102cf..43876494 100644 --- a/lib/whistleblower.rb +++ b/lib/whistleblower.rb @@ -2,7 +2,7 @@ class Whistleblower PLACEHOLDER_REGEXP = /\$(\d)/ def find_hint(stderr) - Hint.where(execution_environment_id: @execution_environment.id).detect do |hint| + @execution_environment.hints.detect do |hint| @matches = Regexp.new(hint.regular_expression).match(stderr) end end