2016-11-18 2 views
0

Par exemple, un utilisateur peut être à la fois un admin et un player et j'aimerais que l'utilisateur définisse un rôle principal. Par exemple, je peux être un player, puis passer plus tard à admin. L'évidence est d'attacher un main_role avec un role_id sur le modèle User. Cependant, je suis inquiet que je devrais garder le rôle principal en synchronisation avec les rôles que l'utilisateur a. Par exemple, si un utilisateur n'est plus un joueur, son main_role ne peut pas être celui d'un joueur.Comment devrais-je concevoir un rôle principal pour un utilisateur avec rollify?

Une autre façon que je pensais est de commander les rôles dans lesquels le premier sera le rôle principal. Je ne peux pas trouver un moyen facile de le faire cependant. Dans ce cas, le rôle principal est "admin" et je peux permuter le "player" pour être le premier si je veux que le rôle principal soit joueur.

Quelqu'un a-t-il de bonnes suggestions pour gérer cela?

Merci!

+0

Faites-vous référence à la [Rolify gem] (https://github.com/RolifyCommunity/rolify)? Si oui, je suis un peu confus quant au concept d'un rôle principal et un rôle secondaire dans ce contexte - ne sont pas les rôles binaires, vous avez le rôle (et les autorisations pour ce rôle) ou vous ne le faites pas. Quelle est la motivation pour différencier un rôle principal et un rôle secondaire? – David

+0

Eh bien, disons que vous avez un client mobile et que vous voulez afficher une vue différente selon que l'utilisateur est administrateur ou non. Un exemple est quand quelqu'un travaille vs utiliser l'application par lui-même, etc. – okysabeni

+0

Je pense que ce que j'essayais de comprendre dans ma question est pourquoi le concept de définir un rôle «principal». Si un utilisateur a le rôle d'administrateur et de joueur ... alors ils ont sûrement tous les droits associés à ces 2 rôles ... comment faire de l'un d'eux un rôle 'principal' profite à votre application? Personnellement, je ne voudrais pas déranger avec le concept de rôles multiples .. dans ce scénario, je voudrais aller pour un utilisateur ayant un des 3 rôles ... joueur, administrateur, admin-joueur. Un joueur administrateur hériterait simplement des droits pour le joueur et l'administrateur. Mais je n'utilise pas de rolify donc je ne suis probablement pas qualifié pour commenter. – David

Répondre

0

Je ferais mieux d'appeler cela "current_role". N'ayez pas peur de vérifier le rôle actuel lorsque vous changez la liste des rôles.

Si l'utilisateur a perdu le rôle current_role pour lui, remplacez le rôle current_role par le suivant de sa liste.

Oui, je recommande d'avoir un current_role qui fait référence à un role_id avec une clé étrangère avec ON DELETE RESTRICT, ON UPDATE CASCADE dans la table users.

Si vous utilisez autre chose que postgres, utilisez les contrôles de cohérence db du rail.

+0

Le rôle de Curren est un meilleur terme. Donc, vous recommandez d'avoir un current_role qui fait référence à un role_id? – okysabeni