gpt4 book ai didi

ruby-on-rails - has_many 通过多个来源

转载 作者:行者123 更新时间:2023-12-03 16:13:48 25 4
gpt4 key购买 nike

我正在尝试创建一个 has_many through与多个来源的关系。

例如一个游戏有一个 home_teamaway_team一个锦标赛有多个游戏。

使用 has_many through games 关系获得锦标赛中所有球队的最佳方法是什么。

现在我的代码是这样的:

class Tournament
has_many :teams, :through => :games, :source => :home_team, :uniq => true
end

但我想要某种方式让它像这样:
class Tournament
has_many :teams, :through => :games, :source => [:home_team, :away_team], :uniq => true
end

编辑:多对多关系不是我的问题。假设结构如下,是否有一种好方法可以让锦标赛中的所有球队都参加。
class Game
has_and_belongs_to_many :tournaments
belongs_to :home_team, :class_name => Team, :foreign_key => :home_team_id
belongs_to :away_team, :class_name => Team, :foreign_key => :away_team_id
end

class Tournament
has_and_belongs_to_many :games
end

有没有办法做 Tournament.teams ?

最佳答案

在花了一些时间试图找到内置解决方案之后,我最终编写了一个名为“游戏中的团队”的自定义查询。它通过 team_1 和 team_2 两次将团队加入游戏,并检查是否有任何游戏 ID 列表在这两个连接中。

这个解决方案不是很好,因为它需要多个查询(其中一个只是所有游戏 ID 的一个巨大列表),但我花了很多时间试图想出另一种方法,但没有。至少这种方式有效。

我很想学习更好的方法。

游戏内代码:

def self.teams
joined_tables = Team.joins(:home_team).joins(:away_team)
joined_tables.where('games.id in (?) or away_team_games.id in (?)',
select(:id), select(:id)).uniq
end

关于ruby-on-rails - has_many 通过多个来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com