Sha256: 662a4c483af153cd9180ff421eb1394f95d61d01381e290765473661e3f493e2
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require 'csv' module CsvRails module ActiveModel module ClassMethods def to_csv(opts={}) fields = opts[:fields] || csv_fields header = csv_header(fields, opts.delete(:i18n_scope)) all = if self.respond_to?(:to_a) to_a else send(:all).to_a end all.to_csv(opts.update(:fields => fields, :header => header)) end def csv_header(fields, scope=nil) fields.map{|f| if scope I18n.t("#{scope}.#{f}", :default => human_attribute_name(f)) else human_attribute_name(f) end } end def csv_fields if self.is_a?(::ActiveRecord::Relation) @klass.attribute_names else attribute_names end end end module InstanceMethods def to_csv_ary(fields=nil, opts={}) fields = attribute_names unless fields fields.map{|field| field.to_s.split(".").inject(self){|object, f| next unless object convert_method = "#{f}_as_csv" method = object.respond_to?(convert_method) ? convert_method : f object.send(method) } } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
csv_rails-0.7.0 | lib/csv_rails/active_model.rb |