2012-07-28 78 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