shadow11 / to_csv forked from arydjmal/to_csv

This simple plugin gives you the ability to call to_csv to a collection of activerecords. The builder options are the same as to_json / to_xml, except for the :include.

This URL has Read+Write access

commit  8e81186b3aee812e39702cd926c3964c78fa0f7a
tree    af596db0491a87ee8c0ea440081e565cf4c62cec
parent  a94862f779c1b62ab679ea1f621dcebd5532826b
to_csv /
name age message
file MIT-LICENSE Wed Jun 11 12:46:07 -0700 2008 first commit [arydjmal]
file README.rdoc Loading commit data...
file init.rb Tue Jul 29 14:02:13 -0700 2008 changed csv library to fastercsv, compatible wi... [arydjmal]
directory lib/
directory test/
README.rdoc

to_csv plugin

This simple plugin gives you the ability to call to_csv to a collection of activerecords. The builder options are the same as to_json / to_xml, except for the :include.

Usage

  @users = User.all

  #
  # defaults are export header and all fields except id, and timestamps
  #

  @users.to_csv
  @users.to_csv(:only => [:last_name, :role])
  @users.to_csv(:timestamps => true, :id => true, :header => false)
  @users.to_csv(:except => [:last_name, :role])
  @users.to_csv(:except => :role, :methods => [:name, :admin?])

  #
  # NEW FEATURE
  # Now you can call methods of a has_one or belongs_to association
  # (for now you can go up/down 1 level)
  #

  # A note belongs_to :user
  @notes = Note.all
  @notes.to_csv(:methods => [{:user => :name}])

Real life example

In the controller where you want to export to csv, add the format.csv line (as of rails 2.1 it is not necessary to register the csv myme_type)

        class UserController < ApplicationController

                def index
                        @users = User.all

                        respond_to do |format|
                                format.html
                                format.xml { render :xml => @users }
                                format.csv { send_data @users.to_csv }
                        end
                end

                def show...
                def new...
                def edit...
                def create...
                def update...
                def destroy...

        end

Dependencies

        sudo gem install fastercsv

Install

        ./script/plugin install git://github.com/arydjmal/to_csv.git

Ideas

I got ideas and influence from Mike Clarks recipe #35 in Rails Recipes book, some anonymous pastie, and whoever wrote to_xml/to_json builders.

Note

Does not work on a single activerecord, ie, User.first.to_csv. Cannot style output.

Copyright © 2008 Ary Djmal, released under the MIT license