Ruby on rails 如何为Rails模型组织俱乐部和团队的赛季?
我有以下情况: 我有一个俱乐部,它可以有几个队,一个队可以有几个球员 然而,一支球队拥有的球员每年都会有所不同。我想知道我怎样才能在图片中添加赛季信息,这样用户就可以在每个赛季添加/删除球员,并且可以看到前几个赛季球队的球员 因此,考虑到以下模型:Ruby on rails 如何为Rails模型组织俱乐部和团队的赛季?,ruby-on-rails,database-design,model,Ruby On Rails,Database Design,Model,我有以下情况: 我有一个俱乐部,它可以有几个队,一个队可以有几个球员 然而,一支球队拥有的球员每年都会有所不同。我想知道我怎样才能在图片中添加赛季信息,这样用户就可以在每个赛季添加/删除球员,并且可以看到前几个赛季球队的球员 因此,考虑到以下模型: Club has_many Team Team belongs_to Club Team has_many Players 我将如何使球队拥有更多的球员取决于赛季(2013/2014-2012/2013)有很多方法可以做到这一点。这里有几点是我马上
Club has_many Team
Team belongs_to Club
Team has_many Players
我将如何使球队拥有更多的球员取决于赛季(2013/2014-2012/2013)有很多方法可以做到这一点。这里有几点是我马上想到的
有很多方法可以做到这一点。这里有几点是我马上想到的
有两种方法可以做到这一点: 一个是为
季节创建另一个关系,并创建三元关系()
这些表看起来像这样:
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
class Club
有关ActiveRecord
关联的更多文档可在此处找到:
另一种方法是跳过季节
关系,并将其作为季节参与
关系中的一个简单属性。因此,您可以在季节参与
中输入季节名称,而不是季节id
(参见图表)。拥有一个单独的季节
关系可以让您有机会存储有关季节的更多信息,如开始日期/结束日期等。最终,您还可以在另一个关系中添加部门信息
有两种方法可以做到这一点:
一个是为季节创建另一个关系,并创建三元关系()
这些表看起来像这样:
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
class Club
有关ActiveRecord
关联的更多文档可在此处找到:
另一种方法是跳过季节
关系,并将其作为季节参与
关系中的一个简单属性。因此,您可以在季节参与
中输入季节名称,而不是季节id
(参见图表)。拥有一个单独的季节
关系可以让您有机会存储有关季节的更多信息,如开始日期/结束日期等。最终,您还可以在另一个关系中添加部门信息
这是可以的,但是如果你需要保存球员球队/俱乐部的历史记录,你将无法保存。这是可以的,但是如果你需要保存球员球队/俱乐部的历史记录,你将无法保存。