2010-09-15 80 views
0

我有一个模型,文章可以有多个标签(和一个标签多个文章)。文章有两个小类,产品和工具包。产品有一个类别,套件没有。complex arel查询

如何获得某个标签(我知道tag.id)的所有文章(包和产品),并加载产品的类别(避免n + 1)?

回答

0

假设您的关联已经设置(即标签has_many:article_tags等文章),如果您使用Rails 3,则可以在执行查找时使用#includes。将您的belongs_to的:类别到您的文章类(是的,它的语义好这样做),那么:

@tag = Tag.first 
@tag.articles.includes(:category) 

应该工作。

http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

+0

不幸的是,事实并非如此。没有找到名为“类别”的协会;也许你拼错了吗?文章没有分类,只有产品。 – Jan 2010-09-15 11:55:22

+0

啊,我明白了,你先把文章分类放到文章中,但是这样做在语义上是正确的,但不是域名。套件由多个文章组成,它们可以有不同的类别作为回报。 – Jan 2010-09-15 11:57:20

+0

您可以发布您的产品和产品的型号代码吗? – jenjenut233 2010-09-20 22:20:17