2017-01-23 2 views
0

Si vous utilisez Pundit pour une autorisation dans une application Blog, Devise for Authentication avec différentes tables utilisateur pour User et Admin, comment une stratégie de postes peut-elle être implémentée :Utilisation de Pundit for Rails 5 Autorisation avec deux tables utilisateur différentes (utilisateur et administrateur)

  • les utilisateurs peuvent mettre à jour leurs propres messages
  • Admins peuvent mettre à jour le poste

de quelqu'un Dans les exemples que je l'ai vu en ligne, il ne semble pas être une disposition pour gérer plusieurs tables utilisateur telles en tant qu'administrateur et utilisateur.

Avoir un UserPolicy et AdminPolicy qui sont spécifiques à leurs tables respectives est simple, mais comment le PostPolicy mettre en œuvre une fonction quelque chose comme:

def initialize(COULD BE A USER OR ADMIN, scope) 
    @user = USER OR ADMIN 
    @scope = scope 
end 

def update? 
    return true if user is either resource.user or ANY ADMIN 
end 

Répondre

1

Parce qu'ils sont dans des tables différentes, je suppose que l'utilisateur et l'administrateur sont également dans différentes classes, vous pouvez simplement utiliser is_a? pour vérifier.

def update? 
    @user == resource.user || @user.is_a?(Admin) 
end