Question

J'ai une question concernant les associations dans Ruby on Rails. Dans l'application, il y a des projets, des utilisateurs, des rôles et des groupes. Le projet appartient à un groupe d'utilisateurs, un utilisateur peut appartenir à de nombreux groupes différents mais ne peut avoir qu'un rôle spécifique au sein de ce groupe. Par exemple:

Dans un groupe, l'utilisateur est le propriétaire du projet, mais dans un autre groupe, il est un écrivain.

Quel est le meilleur moyen d'implémenter cela en utilisant les fonctions intégrées dans Rails?

Merci

Était-ce utile?

La solution

Voici un ensemble très rapide de modèles qui devraient répondre à vos exigences:

class User < ActiveRecord::Base
  has_many :group_memberships
  has_many :groups, :through => :group_memberships
end

class GroupMembership < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
  belongs_to :group
end

class Role < ActiveRecord::Base
  has_many :group_memberships
end

class Group < ActiveRecord::Base
  has_many :group_memberships
  has_many :users, :through > :group_memberships
end

En gros, il existe une table de jointure comportant un identifiant d'utilisateur, de groupe et de rôle. Je vais laisser les migrations comme un exercice pour le questionneur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top