Skip to content

Instantly share code, notes, and snippets.

@ktrinca
Created December 12, 2014 14:43
Show Gist options
  • Save ktrinca/0694a20379ce84788e69 to your computer and use it in GitHub Desktop.
Save ktrinca/0694a20379ce84788e69 to your computer and use it in GitHub Desktop.
class CategoryXls
require 'spreadsheet'
def self.read file_path
Spreadsheet.open(file_path) do |book|
book.worksheets.each do |ws|
0.upto ws.last_row_index do |index|
row = ws.row(index)
yield ws, row
end
end
end
end
def self.import(file)
raise ArgumentError, 'missing required argument file' unless file.present?
read(file) do |sheet, row|
load_category(row[0].to_s)
load_subcategory(row[1].to_s, @category.id)
end
end
def self.load_category(row_1)
name_category = row_1
unless name_category.empty?
@category = ItemCategory.find_or_create_by(:name => name_category)
puts "Categories: #{@category.name}"
end
end
def self.load_subcategory(row_2, id_category)
name_subcategory = row_2
unless name_subcategory.empty?
@item_category_as_category = ItemCategory.categories.where(
:name => name_subcategory).first
if !@item_category_as_category.nil?
subcategories = @item_category_as_category.update_attributes(
item_category_id: id_category)
else
subcategories = ItemCategory.
create_subcategory!(name_subcategory, id_category)
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment