使用ActiveRecord查找多对多关联

时间:2014-11-15 17:07:47

标签: ruby-on-rails-3 activerecord

我对Rails的主动记录仍然缺乏经验,我很难找到一种好方法来匹配与多个其他记录相关联的多条记录。

我正在经历一个有多个赛季和球队的联赛。我想找到目前活跃的赛季中的所有球队。所以...多个季节和多个团队。

模特:

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个团队.* FROM团队WHERE团队.活跃{{1}这只是检查团队是否活跃而不是检查季节。此外,该查询需要很长时间才能运行。

所以...有一个很好的方法吗?我知道我可以做一个手动的sql语句,但我真的希望能够使用并学习activerecord方法来做到这一点。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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