将父级数组与子级Array Seeds Ruby on Rails 5相匹配

问题描述 投票:0回答:1

我在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

假设我想将加拿大服务器与销售部门配对。创建种子时,如何使用数组来做到这一点?或如何在我的种子文件中将Department与其适当的分配和服务器国家/地区进行匹配?

我需要访问阵列吗?

我将感谢您的帮助!

注意:我添加了填充种子文件

ruby-on-rails ruby ruby-on-rails-5
1个回答
0
投票

取决于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'}
]
© www.soinside.com 2019 - 2024. All rights reserved.