мой массив category = ["Components for PC", "Soft", "OS"]
Количество элементов может быть разным.
Эти элементы массива создаются Category
(из файла .csv). В массиве category
мне нужно, чтобы category[0]
была родительской, а category[1]
- дочерней категорией, но родительская category[2]
Компоненты для ПК => Софт => ОС
Использовать драгоценный камень Родословная
Для двух элементов работает такой код (хоть и некрасивый):
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
как создавать категории и подкатегории для любого количества элементов?