ActiveRecord:如何对外键进行嵌套查询?

时间:2011-11-12 13:15:33

标签: ruby-on-rails activerecord

我有3个模型,“教练”,“团队”和“事件”

事件具有属性away_team和home_team,两者都属于Team。一个团队属于教练,教练可以有很多团队。

我想做的是找到一个特定教练没有指导home_team的所有事件。所以,有些东西:

Event.where("home_team.team.coach_id NOT ?", coach.id)

问题在于弄清楚如何编写该语法。我猜我需要包含“团队”模型,但我不确定如何编写一个包含通过特定外键加入的activerecord。

简而言之,任何关于如何在没有出现SQL错误的情况下做出这样做的想法(我今晚已经无数次)都会非常感激。

干杯。

1 个答案:

答案 0 :(得分:1)

如果我理解正确你需要这种sql:

SELECT events.* FROM events JOIN team on events.home_team_id = teams.id WHERE teams.coach_id != coach_id

所以在rails中看起来应该是这样的:

Event.joins("join teams on events.home_team_id = teams.id").where("teams.coach_id != ?", coach_id)

当然我不知道你确切的表格命名,所以你应该适应你的问题。

如果你有事件模型关联:belogns_to:home_team,你只能使用连接(:home_team).where(....)