Ruby 关于 Rails 模型关系和关联
Ruby On Rails Model Relationships and Associations
我有两个名为 Rounds 和 Teams 的模型,每轮有 2 个团队 team 1 和 team 2,他们各自的分数如 team_1_score 和 team_2_score。团队有很多回合。我知道如何使用 class 和从回合 table 到团队 table 的外键来处理多个关联。让我感到困惑的是,如何处理他们各自的分数。例如,有没有办法获得第一队得分,如 first_team.rounds.where('some condition').score。我可以使用这样的原型来获得第一队得分吗?如果使用第二队对象,那么它 returns 第二队得分。我期待着任何形式的帮助。那真是太好了。谢谢
你有你的模特
class Round < ApplicationRecord
has_many :teams
end
class Team < ApplicationRecord
has_many :rounds
end
要在特定回合中获得特定球队的分数,我会这样做:
@team = Team.find(id: params[:team_id])
score = Round.where(team_id: @team.id).team_1_score
假设您在存在参数的控制器中执行此操作,否则只需找到团队并按其 ID 舍入并执行
我建议您使用 has_many :through 关系。这将创建一个全新的 table,您可以在其中通过回合 ID 和团队 ID 查询记录,然后 return 团队得分。
我有两个名为 Rounds 和 Teams 的模型,每轮有 2 个团队 team 1 和 team 2,他们各自的分数如 team_1_score 和 team_2_score。团队有很多回合。我知道如何使用 class 和从回合 table 到团队 table 的外键来处理多个关联。让我感到困惑的是,如何处理他们各自的分数。例如,有没有办法获得第一队得分,如 first_team.rounds.where('some condition').score。我可以使用这样的原型来获得第一队得分吗?如果使用第二队对象,那么它 returns 第二队得分。我期待着任何形式的帮助。那真是太好了。谢谢
你有你的模特
class Round < ApplicationRecord
has_many :teams
end
class Team < ApplicationRecord
has_many :rounds
end
要在特定回合中获得特定球队的分数,我会这样做:
@team = Team.find(id: params[:team_id])
score = Round.where(team_id: @team.id).team_1_score
假设您在存在参数的控制器中执行此操作,否则只需找到团队并按其 ID 舍入并执行
我建议您使用 has_many :through 关系。这将创建一个全新的 table,您可以在其中通过回合 ID 和团队 ID 查询记录,然后 return 团队得分。