Erstellen mehrerer CSV-Dateien und Herunterladen aller Dateien in einem Zip-Archiv mit Rails

Ich suche nach einer Möglichkeit, mehrere CSV-Dateien zu erstellen und sie mit einer Anforderung in meiner Rails-Anwendung als ZIP-Archiv herunterzuladen.

Um das Archiv zu erstellen benutze ich Rubyzip Gem - um es herunterzuladen einfach die in Rails integrierte Funktion send_data. Das Problem, das ich habe, ist, dass die Add-Funktion von Rubyzip einen Pfadnamen zum Laden von Dateien erfordert. Es gibt jedoch keinen Pfad, da meine CSV-Dateien innerhalb derselben Anforderung erstellt werden.

Einiger Code:

# 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

Gibt es eine Möglichkeit, meine csv-Dateien vorübergehend in einem Verzeichnis zu speichern, in dem ich einen Pfadnamen an zipfile.add () übergeben kann?

Nizza Wochenende allen und viel Spaß beim Programmieren!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage