Criando vários arquivos csv e baixe tudo em um arquivo zip usando trilhos
Estou procurando uma maneira de criar vários arquivos csv e baixá-los como um arquivo zip dentro de uma solicitação no meu aplicativo de rails.
Para compilar o arquivo, eu uso o rubyzip gem - para fazer o download apenas da função interna dos trilhos send_data. O problema que tenho é que a função add do rubyzip requer um nome de caminho para carregar arquivos. Mas não há caminho, pois meus arquivos csv são criados na mesma solicitação.
Algum 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
Existe uma maneira de salvar meus arquivos csv temporariamente em algum diretório, que eu possa passar um nome de caminho para zipfile.add ()?
Bom fim de semana a todos e feliz codificação!