2012-12-13 31 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

我更喜欢旧的语法。理解得更清楚。恕我直言 –