我有3个模型,“教练”,“团队”和“事件”
事件具有属性away_team和home_team,两者都属于Team。一个团队属于教练,教练可以有很多团队。
我想做的是找到一个特定教练没有指导home_team的所有事件。所以,有些东西:
Event.where("home_team.team.coach_id NOT ?", coach.id)
问题在于弄清楚如何编写该语法。我猜我需要包含“团队”模型,但我不确定如何编写一个包含通过特定外键加入的activerecord。
简而言之,任何关于如何在没有出现SQL错误的情况下做出这样做的想法(我今晚已经无数次)都会非常感激。
干杯。
答案 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(....)