module CsvProcessor

Public Instance Methods

import_from(csv_path, only = [], except = []) click to toggle source
# File lib/csv_processor.rb, line 4
def import_from(csv_path, only = [], except = [])
  raise("Method does not accept only and except params at once") if !only.empty? && !except.empty?
  csv_text = File.read(csv_path)
  csv = CSV.parse(csv_text, :headers => true)
  only_except_logic(csv, only, except)
  csv.map { |row| self.create!(row.to_hash) }
end
to_csv(options = {}, only = [], except = []) click to toggle source
# File lib/csv_processor.rb, line 12
def to_csv(options = {}, only = [], except = [])
  raise("Method does not accept only and except params at once") if !only.empty? && !except.empty?
  CSV.generate(options) do |csv|
    column_names = self.column_names
    only_except_logic(column_names, only, except)
    csv << column_names
    all.each do |order|
      csv << order.attributes.values_at(*column_names)
    end
  end
end

Private Instance Methods

only_except_logic(list, only, except) click to toggle source
# File lib/csv_processor.rb, line 25
def only_except_logic(list, only, except)
  if only.empty? && !except.empty?
    except.each do |key|
      list.delete(key.to_s)
    end
  elsif !only.empty? && except.empty?
    list = []
    only.each do |key|
      list << key.to_s
    end
  else
  end
end