Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/to_csv-rails.rb

Instance Method Summary collapse

Instance Method Details

#to_csv(options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/to_csv-rails.rb', line 4

def to_csv(options = {})
  return '' if self.empty?

  options.reverse_merge!(:header => true)

  #columns = self.first.class.content_columns # not include the ID column
  if options[:only]
    columns = Array(options[:only]).map(&:to_sym)
  else
    columns = self.first.class.column_names.map(&:to_sym) - Array(options[:except]).map(&:to_sym)
  end

  return '' if columns.empty?

  data = []
  # header
  if options[:header]
    header_columns = options[:header_columns].blank? ? columns.map(&:to_s).map(&:humanize) : options[:header_columns]
    data << header_columns.join(',')
  end

  self.each do |obj|
    data << columns.map do |column|
      begin
        column_value = obj.send(column).to_s
        column_value.include?(",") ? "\"#{column_value}\"" : column_value
      rescue
        ''
      end
    end.join(',')
  end
  data.join("\n")
end