Skip to content

Instantly share code, notes, and snippets.

@christiangenco
Created June 6, 2014 04:26
Show Gist options
  • Save christiangenco/8acebde2025bf0891987 to your computer and use it in GitHub Desktop.
Save christiangenco/8acebde2025bf0891987 to your computer and use it in GitHub Desktop.
Ruby hash array to CSV
class Array
def to_csv(csv_filename="hash.csv")
require 'csv'
CSV.open(csv_filename, "wb") do |csv|
csv << first.keys # adds the attributes name on the first line
self.each do |hash|
csv << hash.values
end
end
end
end
# ex: [{a: 1, b: 2}, {a: 3, b: 4}].to_csv("hash.csv")
@jasonben
Copy link

If the hashes aren't uniform then you will end up with data in the wrong columns. You should use values_at instead:

def to_csv(csv_filename = "hash.csv")
  require "csv"
  CSV.open(csv_filename, "wb") do |csv|
    keys = first.keys
    # header_row
    csv << keys
    self.each do |hash|
      csv << hash.values_at(*keys)
    end
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment