Un utilisateur peut avoir plusieurs rôles, mais un seul rôle par marque. Le problème avec cette configuration est, comment vérifier la marque et le rôle en même temps? Ou devrais-je mieux avec un modèle BrandRole où différents rôles peuvent être mis en place pour chaque marque, puis être en mesure d'attribuer un utilisateur à un BrandRole?Est-ce qu'une relation à 3 voies peut être modélisée de cette façon dans Rails?
classe utilisateur < AR :: Base has_many: user_brand_roles has_many: brand_roles,: à travers =>: user_brand_roles fin
Classe BrandRole < AR :: Base belongs_to: marque belongs_to: rôle fin
classe UserBrandRole < AR :: base belongs_to: brand_role belongs_to: utilisateur fin
De cette façon, je pouvais faire une découverte sur la marque pour l'utilisateur:
br = current_user.brand_roles.where(:brand_id => @brand.id).includes(:brand_role)
if br.blank? or br.role != ADMIN
# reject access, redirect
end
Ceci est une nouvelle application et je suis en train d'apprendre des erreurs du passé et coller à la façon Rails. Est-ce que je fais de mauvaises hypothèses ou des décisions de conception ici?
D'abord s'il vous plaît décrire ce que vous essayez d'accomplir, car il ne semble pas que vous comprenez comment créer des associations. Ensuite, il sera beaucoup plus facile de vous aider :) – s84
Merci Sam. Je comprends les relations dans Rails, mais je pense que mon niveau de confusion est une étape avant cela. Je ne sais pas si je pose les bonnes questions. J'essaie de mettre en place une situation où un utilisateur peut accéder à une zone protégée d'un site avec un certain ensemble d'autorisations. Une entreprise a plusieurs marques, chacune contenant plusieurs produits. Certains employés ont besoin de voir uniquement des informations générales sur les produits au sein d'une marque, certains ont besoin d'un accès de niveau administrateur. – AKWF