2012-07-28 114 views
1

在rails中工作时,我正在努力输出2012年秋季季度用户类的列表。我在这里有3个重要模型:用户,宿舍和课程。基于我所做的其他工作,我敢肯定我的模型协会是现货,但对于那些有兴趣:RoR:查找对象数组的所有关联对象

  • 用户的has_many:通过季度
  • 季度belongs_to的用户课程:季度和的has_many和HABTM课程(通过适当的连接表)
  • 课程的has_many用户通过宿舍和HABTM季度

我想执行一个查询来收集课程特定季度如

current_user.quarters.where(:term => "Fall 2012").courses.each do |c| 
     puts c.title 
    end 

但是这会导致一个错误“未定义的方法‘课程’”这我理解,但我还是想访问所有对象的数组将上述代码中的关联对象做的,而不是运行嵌入式循环,做我所需要的:

current_user.quarters.where(:term => "Fall 2012").courses.each do |q| 
     q.courses.each do |c| 
      puts c.title 
     end 
    end 

谢谢!任何想法表示赞赏:)

+0

为什么你不能用'Courses.where(:季=> my_quarter,:用户=> CURRENT_USER) .each' – 2012-07-28 19:09:23

回答

3

像这样:

current_user.courses.where("quarters.term" => 'Fall 2012') 

应该工作:)

+0

英勇的回应时间和我正在寻找的答案。有什么地方可以去了解更多关于这种事情的信息吗? – mattwd7 2012-07-28 19:16:22

+0

http://guides.rubyonrails.org/active_record_querying.html是一个好的开始,特别是关于连接的部分。你必须明白,当声明has_many:through时,rails会进行连接以获得你想要的。因此,您可以像使用明确加入一样应用条件! – 2012-07-28 19:19:27

+0

同时考虑批准答案,如果这符合你的需要:) – 2012-07-28 19:24:34