【发布时间】:2018-01-24 09:49:42
【问题描述】:
我的数组category = ["Components for PC", "Soft", "OS"]
元素的数量可以不同。
这些数组元素是由Category(来自 .csv 文件)创建的。
在数组category 中,我需要category[0] 是父类,category[1] - 子类,但父类category[2]
PC 组件 => 软件 => 操作系统
使用宝石祖先
对于这样的代码的两个元素的作品(虽然丑陋):
last = nil
csv.each do |row| # rows from the table
base = row[6].split('/')[0] # first element
parent_category = Category.create!(name: base) if Category.where(name: base).first.nil? # Create a base category
row[6].split('/').each do |category| #
if Category.where(name: category).first.nil? # if the category does not exist
last = Category.create!(name: parent_category) if last == nil # create base Category
# if the base exists, create her child
child = Category.create!(name: category, ancestry: Category.where(name: base).first.id) if last != nil
end
end
end
如何为任意数量的元素创建类别和子类别?
【问题讨论】:
标签: ruby-on-rails arrays ruby ancestry