【发布时间】:2010-09-15 02:13:02
【问题描述】:
我有一个模型,其中一篇文章可以有多个标签(一个标签可以有多个文章)。文章有两个子类,产品和套件。产品有类别,套件没有。
如何获取某个标签(我知道 tag.id)的所有文章(包括套件和产品),并加载产品的类别(避免 n+1)?
【问题讨论】:
标签: ruby-on-rails activerecord arel
我有一个模型,其中一篇文章可以有多个标签(一个标签可以有多个文章)。文章有两个子类,产品和套件。产品有类别,套件没有。
如何获取某个标签(我知道 tag.id)的所有文章(包括套件和产品),并加载产品的类别(避免 n+1)?
【问题讨论】:
标签: ruby-on-rails activerecord arel
假设您的关联已经建立(即标签 has_many :articles 到 article_tags 等),如果您使用的是 Rails 3,则可以在查找时使用 #includes。将您的 belongs_to :category 移动到您的 Article 类(是的,这样做在语义上是可以的),然后:
@tag = Tag.first
@tag.articles.includes(:category)
应该可以。
http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations
【讨论】: