Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails一次将记录均匀地分配给组_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails一次将记录均匀地分配给组

Ruby on rails Rails一次将记录均匀地分配给组,ruby-on-rails,Ruby On Rails,我有模型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 ha

我有模型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_团队同时分配给turn_组。 到目前为止,我做到了:

  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\U group\U id。这就足够简单了,比如:

TurnTeam 1,2,3,4,5,6
TurnGroup A,B 
TurnGroupTeam 1-A, 2-B, 3-A, 4-B, 5-A, 6-B

我怎样才能做到这一点?或者,一种随机、均匀地将团队分配给各个小组的方法会更好,尽管这并不是绝对必要的。

要解决这个问题,看起来您需要获得所有轮换小组

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、D,则组数将不均匀(您需要做一些数学运算以确保组数均匀)


希望这能有所帮助。

嗨,谢谢你的回答。该方法有效,但在第一次循环后停止。错误是'NoMethodError(nil:NilClass的未定义方法'id'):'我正在尝试理解原因,之后我将接受代码中修复的答案..ty。我将尝试执行“puts turn_groups.inspect”并检查输出。