Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用游戏表为团队表中的每个团队获取赢家和输家?_Ruby On Rails_Database Design_Application Design - Fatal编程技术网

Ruby on rails 使用游戏表为团队表中的每个团队获取赢家和输家?

Ruby on rails 使用游戏表为团队表中的每个团队获取赢家和输家?,ruby-on-rails,database-design,application-design,Ruby On Rails,Database Design,Application Design,我正在使用RoR创建一个应用程序来管理篮球联赛。我有两张桌子:球队和比赛。游戏表包含两支使用外键的球队,并包含每支球队的得分金额,如下所示: 现在,我想列出所有的球队,然后是他们的输赢记录。我想不出一个更简单的方法来实现这一点,而不是一个foreach循环来计算包含该队的比赛表中的所有记录,并且该队比另一队拥有更多的记录。然后又是损失。必须有一个更简单的方法 有什么建议吗 我同意最好不要在Ruby中加载所有记录并计算这些记录。在SQL查询中执行此操作会快得多 def team_stats(tea

我正在使用RoR创建一个应用程序来管理篮球联赛。我有两张桌子:球队和比赛。游戏表包含两支使用外键的球队,并包含每支球队的得分金额,如下所示:

现在,我想列出所有的球队,然后是他们的输赢记录。我想不出一个更简单的方法来实现这一点,而不是一个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

喜欢它,我不知道为什么我没有想到这一点。随时发布,接下来我要为每一场比赛的每一名球员添加统计数据!祝你好运:我编辑了几次,所以请确保你看到了最新版本。