2012-12-13 35 views
0

我有我的同事以這種方式建立。你如何訪問rails主動關聯中的內部關係?

事件 - (的has_many) - 供應商 - (的has_many) - 產品 - (的has_many) - productTags - (belongs_to的) - 標籤

我試圖檢索標籤事件的數組,但只包括那些有產品的標籤。

起初,我不得不通過

@event = Event.find(1) 

我有一個很艱難的時期下降協會的兔子洞,只獲得了對所有產品標籤數組訪問事件模型。

任何幫助或推動正確的方向將不勝感激。

非常感謝

回答

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可以.joins –

+0

+1很好的答案被替換。您可以將傳遞給'includes'(或'joins')的散列簡化爲:':product_tags => {:product => {:vendor =>:event}}'。 –

+0

我更喜歡舊的語法。理解得更清楚。恕我直言 –