fixed response in order to redirect correctly on ajax requests. Fixed policy

This commit is contained in:
Ralf Teusner
2017-04-18 16:51:02 +02:00
parent 51b4f1acbc
commit d053850572
3 changed files with 15 additions and 29 deletions

View File

@ -411,17 +411,22 @@ class ExercisesController < ApplicationController
end
else
# redirect to feedback page if score is less than 100 percent
redirect_to_user_feedback
redirect_to_user_feedback
return
end
redirect_to_lti_return_path
end
def redirect_to_user_feedback
if UserExerciseFeedback.find_by(exercise: @exercise, user: current_user)
redirect_to(edit_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id}))
else
redirect_to(new_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id}))
url = if UserExerciseFeedback.find_by(exercise: @exercise, user: current_user)
edit_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id})
else
new_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id})
end
respond_to do |format|
format.html { redirect_to(url) }
format.json { render(json: {redirect: url}) }
end
end

View File

@ -1,6 +1,6 @@
class UserExerciseFeedback < ActiveRecord::Base
include Creation
belongs_to :user, polymorphic: true
belongs_to :exercise
validates :user_id, uniqueness: { scope: [:exercise_id, :user_type] }

View File

@ -1,38 +1,19 @@
class UserExerciseFeedbackPolicy < AdminOrAuthorPolicy
class UserExerciseFeedbackPolicy < ApplicationPolicy
def author?
@user == @record.author
end
private :author?
def batch_update?
admin?
end
def create?
everyone
end
def show?
@user.internal_user?
def new?
everyone
end
[:clone?, :destroy?, :edit?, :update?].each do |action|
[:show? ,:destroy?, :edit?, :update?].each do |action|
define_method(action) { admin? || author?}
end
[:reload?].each do |action|
define_method(action) { everyone }
end
class Scope < Scope
def resolve
if @user.admin?
@scope.all
elsif @user.internal_user?
@scope.where('user_id = ? OR public = TRUE', @user.id)
else
@scope.none
end
end
end
end