Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/render_csv/extension.rb

Instance Method Summary collapse

Instance Method Details

#to_csv(options = {}) ⇒ Object

Converts an array to CSV formatted string Options include: :only => [:col1, :col2] # Specify which columns to include :except => [:col1, :col2] # Specify which columns to exclude :add_methods => [:method1, :method2] # Include addtional methods that aren’t columns



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/render_csv/extension.rb', line 8

def to_csv(options={})
  return '' if empty?
  return join(',') unless first.class.respond_to? :column_names

  columns = first.class.column_names
  columns &= options[:only].map(&:to_s) if options[:only]
  columns -= options[:except].map(&:to_s) if options[:except]
  columns += options[:add_methods].map(&:to_s) if options[:add_methods]

  csv = [columns.join(',')]
  csv.concat(map {|v| columns.map {|c| v.send(c) }.join(',') })

  csv.join("\n")
end