J'essaie d'utiliser cette règle pundit pour empêcher les utilisateurs avec le rôle clinicien d'accéder à l'action d'index sur le contrôleur de patients. La section portée fonctionne actuellement comme je l'espérais, mais avec la politique telle qu'elle est actuellement rédigée, je peux toujours accéder/patients en tant qu'utilisateur clinicien. Qu'est-ce que je fais mal? Merci pour toute aide!Stratégie Pundit Restreindre l'action d'index et afficher des rôles spécifiques
Voici mes définitions de rôle:
enum role: { staff: 0, clinician: 1, admin: 2 }
Politique des patients
class PatientPolicy < ApplicationPolicy
class Scope
attr_reader :user, :scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
if user.admin?
scope.all
else
scope.joins(:user).merge(User.where(university: user.university))
end
end
end
def index?
user.staff? or user.admin?
end
end
patients contrôleur:
def index
@patients = policy_scope(Patient)
end
[rest of controller]