【问题标题】:ActiveRecord: how to do nested queries on foreign keys?ActiveRecord:如何对外键进行嵌套查询?
【发布时间】:2011-11-12 22:34:43
【问题描述】:

我有 3 个模型,“Coach”、“Team”和“Event”

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

我想做的是找出 home_team 不是由特定教练指导的所有赛事。所以,大致如下:

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

问题在于弄清楚如何编写该语法。我猜我需要包含“团队”模型,但我不确定如何编写通过特定外键连接的活动记录。

简而言之,任何关于如何在不出现 SQL 错误的情况下执行此操作的想法(我今晚有无数个错误)将不胜感激。

干杯。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案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)
    

    当然,我不知道您的确切表命名,因此您应该使用此解决方案来解决您的问题。

    如果在Event model中有关联:belogns_to:home_team,则只能使用joins(:home_team).where(....)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多