Comment rendre les vues en fonction du rôle de l'utilisateur sur Rails 5.1
Je travaille actuellement sur une application Rails 5.1 qui a deux rôles d'utilisateur différents : "Admin" et "Client". (Je stocke les rôles dans une colonne nommée "rôle" #string sur la table de l'utilisateur).
Je recherche le moyen le plus efficace de rendre différentes vues en fonction du rôle de l'utilisateur. par exemple
Si un utilisateur avec le user.role = "Customer" se connecte, je souhaite afficher customer#index
Si un utilisateur avec le user.role = "Admin" se connecte, je voudrais rendre admin#index
À l'heure actuelle, la racine de la route est "admin#index". Existe-t-il un moyen de modifier la route racine en fonction du rôle de l'utilisateur actuel ?
Tous les conseils sur la manière la plus efficace de rendre différentes vues en fonction du rôle de l'utilisateur seront appréciés ! Merci beaucoup!
Vous pouvez spécifier l' after_sign_in_path_for
itinéraire d'une ressource. Donc
contrôleur_application.rb
....
def after_sign_in_path_for(resource)
if resource.role == "Customer"
customers_path (or whatever the name of the path is in your routes)
elsif resource.role == "Admin"
admins_path (same here, whatever the name of the path is in your routes)
else
super
end
end
....
Il existe un tas de méthodes comme celle-ci que vous pourriez trouver utile de creuser, pour celle-ci spécifique https://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/Helpers:after_sign_in_path_for , ou pour toutes les options https : //www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/Helpers .