Rails распределяет записи по группам одновременно - PullRequest
0 голосов
/ 07 июня 2018

У меня есть модели 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

Как мне этого добиться?Или метод случайного и равномерного распределения команд по группам был бы еще лучше, хотя это и не обязательно.

1 Ответ

0 голосов
/ 07 июня 2018

Чтобы решить эту проблему, похоже, вы захотите получить все свои группы ходов

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 на основе количества циклов.

Обратите внимание, что если вы возьмете приведенный выше пример и добавите TurnGroup C, D, группы будут неравномерными (вам потребуется немного математики, чтобы обеспечить четность групп)

Надеюсь, это поможетвне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...