2014-11-15 91 views
0

我對Rails的主動記錄仍然相當缺乏經驗,我正在努力尋找一種匹配與多個其他記錄相關聯的多條記錄的好方法。使用ActiveRecord查找多對多關聯

我正在運行一個有多個賽季和球隊的聯盟。我想找到當前活躍賽季中的所有球隊。所以......多個賽季和多支球隊。

的車型:

class Season < ActiveRecord::Base 
    has_many :team_seasons, :dependent => :delete_all 
    has_many :teams, :through => :team_seasons 
end 

class Team < ActiveRecord::Base 
    has_many :team_seasons, :dependent => :delete_all 
    has_many :seasons, :through => :team_seasons 
end 

我想應該是這樣@teams = Team.includes(:seasons).where(:active => true)但這返回SQL是SELECT.* FROMWHERE.活躍= 1這是剛剛檢查團隊是否處於活動狀態,而不是檢查所有的季節。另外,該查詢需要很長時間才能運行。

那麼......有沒有一個很好的方法來做到這一點?我知道我可以做一個手動的sql語句,但我真的希望能夠使用和學習activerecord的方式來做到這一點。

提前致謝!

回答

1

@teams = Team.includes(:seasons).where("seasons.active = true")做到了。