Module: JavyTool::Csv::ClassMethods

Defined in:
lib/javy_tool/csv.rb

Instance Method Summary collapse

Instance Method Details

#to_csv(options = {}, &block) ⇒ Object

used to export xls or csv file need to extend in model use like following:

format.xls {send_data @checkinouts.to_csv(col_sep: "\t")}

or

select_columns = "id,name,user_id"
format.xls {send_data @checkinouts.select(_select_columns).to_csv(select: _select_columns)}


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/javy_tool/csv.rb', line 12

def to_csv(options = {},&block)
  select_values = options.delete(:select)
  objs = options.delete(:objs) # model instances list
  select_values = select_values.split(",").collect{|e| e.split(/\s+|\./).last} if select_values.kind_of?(String)
  options[:col_sep] ||= "\t"
  CSV.generate(options) do |csv|
    cols = select_values.presence || column_names
    csv << cols
    (objs || all).each do |item|
      if block_given?
        csv << yield(item,cols)
      else
        csv << item.attributes.values_at(*cols)
      end
    end
  end
end