module JavyTool::Csv::ClassMethods
Public Instance Methods
to_csv(options = {}) { |item,cols| ... }
click to toggle source
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)}
# 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