gpt4 book ai didi

ruby-on-rails - ActiveRecord 有两个关联

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:05 26 4
gpt4 key购买 nike

实现与 activerecord 有两个关联的最佳方法是什么?

我有一个团队和游戏模型。每个团队将有_许多游戏 @team.games。一场比赛将有两支球队 @game.hosting_team@game.opposing_team

我开始时有两个 belongs_to/has_one 协会,但后来 @team.games 只会返回他们的主场比赛。

我能想到的另一个选择是使用 HABTM 并使用验证器来确保只有记录。唯一缺少的是跟踪主队。似乎我需要一个有很多通过关联但我不确定......

感谢您的帮助。

这是两个 has_many 关联的示例。这里的问题是我必须调用 team.gamesteam.opponents 来获取他们游戏的完整列表

class Team < ActiveRecord::Base
has_many :games
has_many :opponents, :class_name => "Team"#, :foreign_key => ""
end

class Game < ActiveRecord::Base
belongs_to :team, :class_name => "Team" #, :foreign_key => "team_id"
belongs_to :opponent, :class_name => "Team" #, :foreign_key => "opponent_id"
end

我想要这样的东西,但这显然不是 belongs_to 的工作方式。

class Team < ActiveRecord::Base
has_many :games
end

class Game < ActiveRecord::Base
belongs_to :hosting_team
belongs_to :opposing_team
end

我想要的 api 看起来像这样。

@team.games # return all games home or away
@game.hosting_team # Team
@game.opposing_team # Team

最佳答案

您可能仍然可以使用 bt/ho 关联对其进行建模,并将游戏设置为团队中的访问器方法而不是关联:

class Team < ActiveRecord::Base
def games
Game.find(:conditions => ["home_team_id = ? OR away_team_id = ?", id, id])
end
end

关于ruby-on-rails - ActiveRecord 有两个关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298487/

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