Сопоставить родительский массив с дочерним Array Seeds Ruby on Rails 5 - PullRequest
1 голос
/ 04 ноября 2019

Я создаю тестирование семян в своем приложении ruby ​​on rails, и я получил следующие массивы:

Файл Seed.rb

        company = ["Tecnics"]

        departments = ["hr"],["sales"],["IT"],["marketing"]

        assignments = ["goverment"],["contracts"],["banks"],["servers"]["social media"], ["telecom"]

        country_servers = ["mexico"], ["canada"], ["ohio"], ["New york"]


      company = Division.create!({
       name: company[0]
      })

      #departments
      departments.each { |dept_name, idx|
        dept_names = Division.create!({
          name: dept,
          parent_id: company.id
        })
      }  

      #assignments
      assignments.each  {|assign_name, idx|
        @assign_tmp = Division.create!({
          name: assign_name,
          parent_id: dept_names.id
        })
      }  

     #country_servers
      country_servers.each  {|server_name, idx|
        @server_tmp = Division.create!({
          name: server_name,
          parent_id: assign_tmp.id
        })
      }
File.sort_tree 

enter image description here

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

Нужен ли мне доступ к массиву?

Я буду благодарен за помощь!

ПРИМЕЧАНИЕ. Я добавил свой начальный файл заполнения

1 Ответ

2 голосов
/ 04 ноября 2019

В зависимости от того, как выглядит модель Division, вы должны иметь возможность генерировать все нужные вам объекты, задавая связи с массивами хэшей. Что-то вроде:

company = {
  name: 'Tecnics',
  departments: ['HR', 'Sales', 'IT', 'Marketing'],
  assignments: ['Government', 'Telecom']
}

departments = [
  {name: 'HR', parent_name: 'Tecnics', parent_type: 'Company', assignments: ['Contracts']},
  {name: 'Sales', parent_name: 'Tecnics', parent_type: 'Company', assignments: ['Banks'], server: 'Canada'},
  {name: 'IT', parent_name: 'Tecnics', parent_type: 'Company' assignments: ['Severs']},
  {name: 'Marketing', parent_name: 'Tecnics', parent_type: 'Company', assignments: ['Social Media']}
]

assignments = [
  {name: 'Government', parent_name: 'Tecnics', parent_type: 'Company'},
  {name: 'Contracts', parent_name: 'HR', parent_type: 'department' server: 'New York'},
  {name: 'Banks', parent_name: 'Sales', parent_type: 'department'},
  {name: 'Servers', parent_name: 'IT', parent_type: 'department', server: 'Ohio'},
  {name: 'Social Media', parent_name: 'Marketing', parent_type: 'department', server: 'Mexico'},
  {name: 'Telecom' parent_name: 'Tecnics', parent_type: 'Company'}
]

servers = [
  {name: 'Mexico', parent_name: 'Social Media', parent_type: 'assignment'},
  {name: 'Canada', parent_name: 'Sales', parent_type: 'department'},
  {name: 'Ohio', parent_name: 'Servers', parent_type: 'assignment'},
  {name: 'New York', parent_name: 'Contracts', parent_type: 'assignment'}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...