Skip to content

Instantly share code, notes, and snippets.

@gramos
Forked from ktrinca/gist:0694a20379ce84788e69
Last active August 29, 2015 14:11
Show Gist options
  • Save gramos/00af6030efc5bf76e4ae to your computer and use it in GitHub Desktop.
Save gramos/00af6030efc5bf76e4ae to your computer and use it in GitHub Desktop.
require 'spreadsheet'
class CategoryXls
def initialize(file_path)
@file_path = file_path
end
def import
read( @file_path ) do |sheet, row|
( category = load_category row[0].to_s ) unless category_name.empty?
( load_subcategory row[1].to_s, category.id ) unless subcategory_name.empty?
end
end
private
def load_category( category_name )
category = ItemCategory.find_or_create_by( :name => category_name )
puts "Categories: #{ category.name }"
category
end
def load_subcategory(subcategory_name, category_id)
item_category = ItemCategory.categories.where( :name => subcategory_name ).first
# A lo mejor esto se puede reemplazar por un find_or_create.
if item_category.nil?
subcategories = ItemCategory.create_subcategory!( subcategory_name, category_id )
else
subcategories = item_category.update_attributes( item_category_id: category_id )
end
end
def read
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment