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