0

J'ai trois modèles:Rails - débutant question d'association avec les deux modèles has_many et HABTM

class Tenant < ActiveRecord::Base 
    has_many :sites 
end 

class Site < ActiveRecord::Base 
    belongs_to :tenant 
    has_and_belongs_to_many :users 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :sites 
end 

Pour les utilisateurs du site et, j'ai une table de jointure (sites_users).

Chaque site a n utilisateurs. Chaque locataire a n sites.

Pour obtenir une liste d'utilisateurs pour un site spécifique, il est facile:

t = Tenant.first 
s = t.sites.first 
s.users 

Mais est-il une association que je peux ajouter au locataire de fournir une liste de tous les utilisateurs entre tous les sites sous ce locataire? Alors que je peux faire:

t = Tenant.first 
t.users 

Répondre

0

Un certain nombre de personnes ont demandé cela, vous verrez une discussion dans le Rails Lighthouse Ticket #8994 de certains développeurs tentent de fusionner la fonctionnalité du nested_has_many_through plugin. Si vous êtes sur Rails 2.3, le nested_has_many_through plugin peut fonctionner pour vous, sinon dans Rails 3 vous pouvez écrire une requête ARel pour trouver le bon ensemble d'études.

+0

Merci, Patrick! Ce billet phare est encourageant. Je vais chercher à écrire une requête ARel pour une solution stopgap. –