我有以下情况:
我有一个可以拥有多个团队的俱乐部,一个团队可以有几个玩家。
但是,团队所拥有的玩家每年都会有所不同。我想知道如何以某种方式将季节信息放入图片中,用户每个赛季都可以添加/删除玩家,并且能够看到前一赛季球队的球员。
因此,给出以下模型:
Club has_many Team
Team belongs_to Club
Team has_many Players
我如何才能让球队拥有很多球员依赖赛季(2013/2014 - 2012/2013 ..)
答案 0 :(得分:4)
有两种方法可以做到:
一种是为SEASON
创建另一种关系并创建三元关系(http://www.databasedesign.co.uk/bookdatabasesafirstcourse/chap3/chap3.htm)
表格看起来像这样:
PLAYER(id,...)
TEAM(id,name,...,club_id)
SEASON(id,season_name,...)
SEASON_PARTICIPATION(id,player_id,season_id,team_id)
ActiveRecord关联将是:
class Club < ActiveRecord::Base
has_many :teams
end
class Team < ActiveRecord::Base
belongs_to :club
has_many :players, through: :season_participations
end
class Player < ActiveRecord::Base
belongs_to :teams, through: :season_participations
end
class Season < ActiveRecord::Base
has_many :players, through: :season_participations
end
class SeasonParticipation < ActiveRecord::Base
belongs_to :player
belongs_to :team
belongs_to :season
end
有关ActiveRecord
关联的更多文档,请访问:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association
另一种方法是同时跳过SEASON
关系并将其作为SEASON_PARTICIPATION
关系中的简单属性。因此,season_id
代替SEASON_PARTICIPATION
您将获得季节的名称(参见图2)。拥有单独的SEASON
关系可让您有机会存储有关季节的更多信息,例如开始日期/结束日期等。最后,您还可以在其他关系中添加部门信息。
答案 1 :(得分:0)
有很多方法可以做到这一点。这是一些让人想起的东西。