Sha256: 94923512f32d06058c71eb071ad3ddf055e16c103494eb870a2aa600d8a14276
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
require 'csv' module CsvRails module ActiveRecord def self.included(base) base.extend ClassMethods ::ActiveRecord::Relation.send(:include, ClassMethods) base.send(:include, InstanceMethods) end module ClassMethods def to_csv(opts={}) fields = opts[:fields] || csv_fields scope = opts.delete(:i18n_scope) header = fields.map{|f| if scope I18n.t("#{scope}.#{f}", :default => human_attribute_name(f)) else human_attribute_name(f) end } all.to_csv(opts.update(:fields => fields, :header => header)) end def csv_fields if respond_to?(:attribute_names) attribute_names elsif self.is_a?(::ActiveRecord::Relation) @klass.new.attribute_names else new.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.5.2 | lib/csv_rails/active_record.rb |