嵌套关联查询

问题描述:

Class User 
    has_many :universities 
end 

Class University 
    belongs_to :user 
    has_many :courses 
end 

Class Course 
    belongs_to :university 
end 

现在,我想查找任何用户的courses嵌套关联查询

我可以使用下面的查询:

User.find(1).universities.collect{|x| x.courses} 

但有没有其他简单的方法可以得到这样的结果?请解释你的答案,以便我能理解。 在此先感谢!

+0

第一个问题。您是否期望在用户拥有的所有大学都能获得所有可用的课程? – Coenwulf 2015-04-02 17:28:05

+0

是的,你说得对。 @Coenwulf – Emu 2015-04-02 17:35:21

添加到User型号:

has_many :courses, through: :universities 

现在,您可以通过获取用户的所有课程:

User.find(1).courses 

从文档(http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association):

一个的has_many:通过关联通常用于与另一个模型建立多对多连接。该关联表明声明模型可以通过继续第三个模型与另一个模型的零个或多个实例进行匹配。