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!

questionAnswers(2)

yourAnswerToTheQuestion