我正在创建一个使用 RoR 来管理篮球联赛的应用程序。我有两张桌子:Teams
& Games
。该Games
表使用外键获取两个团队,并包含每个团队的得分量,如下所示:
现在,我想列出所有球队,然后是他们的输赢记录。我想不出一个更简单的方法来做到这一点,而不是一个 foreach 循环来计算包含该团队的游戏表中的所有记录,并且该团队比其他团队拥有更多。然后又是损失。必须有一个更简单的方法。
有什么建议么?
我正在创建一个使用 RoR 来管理篮球联赛的应用程序。我有两张桌子:Teams
& Games
。该Games
表使用外键获取两个团队,并包含每个团队的得分量,如下所示:
现在,我想列出所有球队,然后是他们的输赢记录。我想不出一个更简单的方法来做到这一点,而不是一个 foreach 循环来计算包含该团队的游戏表中的所有记录,并且该团队比其他团队拥有更多。然后又是损失。必须有一个更简单的方法。
有什么建议么?
我同意最好不要在 Ruby 中加载所有记录并计算这些记录。在 SQL 查询中执行此操作会快得多。
def team_stats(team_id)
# Wins are any game where the team played and scored higher than the other team
wins = Game.where('(home_team_id = ? AND home_team_score > away_team_score) OR (away_team_id = ? AND home_team_score < away_team_score)', team_id, team_id).count
# The opposite for losses
losses = Game.where('(home_team_id = ? AND home_team_score < away_team_score) OR (away_team_id = ? AND home_team_score > away_team_score)', team_id, team_id).count
# Ties are not accounted for
return {:wins => wins, :losses => losses}
end