Skip to content

Latest commit

 

History

History
78 lines (48 loc) · 1.65 KB

README.rdoc

File metadata and controls

78 lines (48 loc) · 1.65 KB

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