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