嵌套关联查询
问题描述:
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}
但有没有其他简单的方法可以得到这样的结果?请解释你的答案,以便我能理解。 在此先感谢!
答
添加到User
型号:
has_many :courses, through: :universities
现在,您可以通过获取用户的所有课程:
User.find(1).courses
从文档(http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association):
一个的has_many:通过关联通常用于与另一个模型建立多对多连接。该关联表明声明模型可以通过继续第三个模型与另一个模型的零个或多个实例进行匹配。
第一个问题。您是否期望在用户拥有的所有大学都能获得所有可用的课程? – Coenwulf 2015-04-02 17:28:05
是的,你说得对。 @Coenwulf – Emu 2015-04-02 17:35:21