Sha256: a0068afd0e8a04fc80f42a1a831d02120449803840aaa7d66cc84095a02d5d61
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
require 'csv' module ActiveRecord module Acts module Csv 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.delete(:fields) || attribute_names CSV.generate do |csv| csv << fields.map{|f| name = human_attribute_name(f) opts[:encoding] ? name.encode(opts[:encoding]) : name } unless opts[:without_header] all.each{|row| csv << row.to_csv_ary(fields) } end end end module InstanceMethods def to_csv_ary(fields=nil, opts={}) fields = attribute_names unless fields fields.map{|field| convert_method = "#{field}_as_csv" method = respond_to?(convert_method) ? convert_method : field value = send(method) opts[:encoding] ? value.to_s.encode(opts[:encoding]) : value } end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
csv_rails-0.3.0 | lib/active_record/acts/csv.rb |