No commit activity in last 3 years
No release in over 3 years
Simple ActiveRecordModel to_csv() class method that preserves scopes
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

= 2.5.0

Runtime

>= 3.0.0
 Project Readme

ActiveRecord.to_csv¶ ↑

Description¶ ↑

A simple ActiveRecord::Base to_csv() class method that preserves scopes. to_csv() returns the entire contents including the header ready to be written to file.

Usage¶ ↑

# Assuming a Movie model with title and director_id columns.
Movie.to_csv
# would return:
title,director_id
title,director_id
Black Swan,0
Inception,1
The Fighter,2
The King's Speech,3
The Kids Are All Right,4

Movie.bad.to_csv
# would return:
title,director_id
The Kids Are All Right,4

Note that #to_csv is called like a scope or query. The following will NOT give you the same results:

Movie.all.to_csv

This will use Ruby’s Array#to_csv method.

Attribute#to_csv¶ ↑

After a model object’s attributes are collected, to_csv is called on the resulting array. However, this poses a problem because it will blindly convert the attributes to a string – i.e. call to_s on them. If one of your attributes is a Date, then calling to_s may produce unwanted output. For example, if you have Date::DATE_FORMATS = ‘%d %B, %Y’ your dates will have the month written out like ‘January’, ‘February’, etc. To counter this, this gem will make an attempt to call to_csv() on each attribute. To get YYYY-MM-DD output, you could do something like:

class Date
  def to_csv
    strftime('%Y-%m-%d')
  end
end

Note that object.send(attribute_name) is used, so datetime fields will be returned as ActiveSupport::TimeWithZone objects.

TODO¶ ↑

Options to specify columns to be included (currently, id and timestamp columns are excluded).

Compatibility¶ ↑

Tested with ActiveRecord v3.0.5

gem-testers.org/gems/active_record_to_csv

Related gems¶ ↑