我有模型Turn,TurnGroup,TurnTeam和TurnGroupTeam
turn.rb
has_many :turn_groups
has_many :turn_teams
turn_group.rb
belongs_to :turn
has_many :turn_group_teams
turn_group_team.rb
belongs_to :turn_group
belongs_to :turn_team
turn_team.rb
belongs_to :turn
has_many :turn_group_teams
我正在尝试创建一个方法,将所有turn_teams一次性分配给turn_groups。 到目前为止我做了:
def_assign_teams
@turn_teams = @turn.turn_teams
@turn_teams.each.do |turn_team|
TurnGroupTeam.create(turn_team_id: turn_team.id, turn_group_id: ??? )
end
我不知道如何分配turn_group_id。这就足够简单了:
TurnTeam 1,2,3,4,5,6
TurnGroup A,B
TurnGroupTeam 1-A, 2-B, 3-A, 4-B, 5-A, 6-B
我怎样才能实现这一目标?或者,一种将团队随机均匀地分配到群组的方法会更好,尽管不是绝对必要的。
答案 0 :(得分:1)
要解决此问题,您似乎想要获得所有转弯组
def assign_teams
index = 0
@turn_teams = @turn.turn_teams
turn_groups = @turn.turn_groups
@turn_teams.each do |turn_team|
TurnGroupTeam.create(turn_team_id: turn_team.id, turn_group_id: turn_groups[index].id )
if index === turn_groups.count
index = 0
else
index = index + 1
end
end
end
上面的内容应该有效,基本上,你将获得记录数组中的所有转弯组。之后,您将根据发生的循环次数分配turn_groups id。
请注意,如果你采用上面的例子并添加TurnGroup C,那么这些组将是不均匀的(你必须做一些数学运算来确保连组)
希望这会有所帮助。