0

我认为这是一个经典问题,但我不知道如何命名。

假设我有三个模型A,B,C。A有很多B,B有很多C。现在我有一个A,如何通过Rails中的某个B查询属于该A的所有C?

目前我最好的解决方案是查询属于该 A 的所有 B,然后提取一个包含所有 B 的 id 的数组并发出另一个查询以获取该数组中的所有 C 的 B_id。

但我想知道是否有优雅(或内置)的解决方案。

4

1 回答 1

0

您可以使用has_many :through.

http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

has_many :through 关联对于通过嵌套的 has_many 关联设置“快捷方式”也很有用。例如,如果一个文档有很多节,而一个节有很多段落,您有时可能想要获取文档中所有段落的简单集合。你可以这样设置:

class Document < ActiveRecord::Base
  has_many :sections
  has_many :paragraphs, through: :sections
end

class Section < ActiveRecord::Base
  belongs_to :document
  has_many :paragraphs
end

class Paragraph < ActiveRecord::Base
  belongs_to :section
end
于 2013-09-05T10:09:06.017 回答