Crear múltiples archivos csv y descargar todo en un archivo zip usando rails
Estoy buscando una manera de crear múltiples archivos csv y descargarlos como un archivo zip dentro de una solicitud en mi aplicación rails.
Para construir el archivo utilizo rubyzip gem, para descargarlo solo la función incorporada de rails send_data. El problema que tengo es que la función add de rubyzip requiere un nombre de ruta para cargar archivos. Pero no hay una ruta ya que mis archivos csv se crean dentro de la misma solicitud.
Un poco de código:
# controller action to download zip
def download_zip
zip = @company.download_all
send_data zip, filename: "abc.zip", type: 'application/zip'
end
# method to create zip
def download_all
Zip::File.open('def.zip', Zip::File::CREATE) do |zipfile|
self.users.each do |user|
#some magic to combine zipfile.add() and user.to_csv
end
end
end
# method to create csv
def to_csv
CSV.generate do |csv|
#build awesome csv
end
end
¿Hay alguna manera de guardar mis archivos csv temporalmente en algún directorio, que pueda pasar un nombre de ruta a zipfile.add ()?
¡Buen fin de semana a todos y feliz codificación!