rails ruby-on-rails csv jruby

ruby-on-rails - rails - activerecord import csv



convertir matriz de hashes a un archivo csv (2)

¿Cómo convertir una matriz de hashes a un archivo .csv?

Yo he tratado

CSV.open("data.csv", "wb") do |csv| @data.to_csv end

pero esta en blanco


Prueba esto:

CSV.open("data.csv", "wb") do |csv| @data.each do |hash| csv << hash.values end end

Si desea que la primera línea del CSV contenga las claves del hash (algo así como un encabezado), simplemente haga lo siguiente:

CSV.open("data.csv", "wb") do |csv| csv << @data.first.keys # adds the attributes name on the first line @data.each do |hash| csv << hash.values end end

Por favor, lea el comentario de @cgenco a continuación: escribió un parche de mono para la clase Array.


Si los hashes no son uniformes, terminará con datos en las columnas incorrectas. Deberías usar values_at en su lugar:

CSV.open("data.csv", "wb") do |csv| keys = @data.first.keys csv << keys @data.each do |hash| csv << hash.values_at(*keys) end end