嵌套关联查询

时间:2015-04-02 17:23:21

标签: sql ruby-on-rails activerecord

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}

但是有没有其他简单的方法来获得这个结果?请解释一下你的答案,以便我能理解。 提前谢谢!

1 个答案:

答案 0 :(得分:3)

加入User模型:

has_many :courses, through: :universities

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

User.find(1).courses

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

  

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