2012-12-13 4 views
0

J'ai mes associés mis en place de cette manière.Comment accéder aux relations internes dans les rails association active?

événement - (has_many) - fournisseur - (has_many) - Produit - (has_many) - Producttags - (belongs_to) - Tags

Je suis en train de récupérer un tableau de balises pour un événement, mais seulement y compris ceux les balises qui ont des produits.

Dans un premier temps j'ai accès au modèle d'événement par

@event = Event.find(1) 

Je vais avoir une période très difficile d'aller dans le trou du lapin des associations pour récupérer tout le tableau de balises pour tous les produits.

Toute aide ou poussée dans la bonne direction serait grandement appréciée.

Merci beaucoup

Répondre

1
class Event < ActiveRecord::Base 

    def tags 
    Tag.includes(:product_tags => {:product => {:vendor => {:event => {}}}}).where(["events.id = ?", self.id]) 
    end 

end 

@event = Event.find(1) 
@event.tags 
+0

.includes peuvent être remplacés par .joins –

+0

+1 bonne réponse. Vous pouvez simplifier le hachage passé à 'includes' (ou' joins') à: ': product_tags => {: product => {: vendeur =>: event}}'. –

+0

Je préfère l'ancienne syntaxe. C'est plus clair à comprendre. A mon humble avis –

Questions connexes