我正在建立一个像网络应用程序一样的体育联盟。共有3个型号,彼此相关。玩家(用户),团队和游戏。球队有很多球员和许多比赛。玩家有很多游戏,可以拥有多个团队。游戏属于团队和玩家。
Teams: have_many :players
Teams: have_many :games
Players: have_many :teams
Players: have_many :games
Games: belong_to :teams
Games: belong_to :players
有没有办法使用“has_many through”表创建“三联关联”?我倾向于“has_many through”,然后在“直通”表中跟踪每个玩家的回应状态。我也希望两个团队都在“通过”表中,这样我可以做一些事情(player_id,team_id,game_id),并且只为两个团队创建一个游戏。
或者我上面的工作是做什么的?或者我完全偏离了摇杆并以错误的方式解决这个问题?
答案 0 :(得分:0)
你可以试试这个:
class Game < ActiveRecord::Base
belongs_to :gameable, polymorphic: true
end
class Team < ActiveRecord::Base
has_many :games, as: :gameable
has_many :players, through: :matches
end
class Player < ActiveRecord::Base
has_many :games, as: :gameable
has_many :teams, through: :matches
end
class Match < ActiveRecord::Base
belongs_to :players
belongs_to :teams
end
希望这会对你有所帮助。