Ce doit être un problème très commun. J'ai beaucoup à many enchaîné comme ceci:Enchaîné has_many à travers: users -> roles -> lists. Trouver les listes auxquelles un utilisateur est assigné (via les rôles)
utilisateur n < ==> n Rôle n < ==> Liste n
modèles ActiveRecord:
class User
# linking to roles
has_many :role_assignments
has_many :roles, :through => :role_assignments
end
class Role
# linking back to users
has_many :role_assignments
has_many :users, :through => :role_assignments
# linking to lists
has_many :list_assignments
has_many :lists, :through => :list_assignments
end
class List
# linking back to roles
has_many :list_assignments
has_many :roles, :through => :list_assignments
end
# ... and the join models:
class RoleAssignment
belongs_to :role
belongs_to :user
end
class ListAssignment
belongs_to :list
belongs_to :role
end
Que serait une named_scope ou une association dans le modèle List pour trouver toutes les listes qui ont tous les rôles qui à leur tour ont un utilisateur spécifique?
Tout indice serait grandement apprécié!
Où sont les modèles role_assignments et list_assignments? Vous avez besoin des déclarations belongs_to sur la (les) table (s) de jointure. – bensie
J'ai omis ceux pour la concision, mais votre question me fait penser que je devrais les ajouter aussi. – mxgrn