9

Rails アプリケーションで複数の csv ファイルを作成し、それらを 1 つの要求で 1 つの zip アーカイブとしてダウンロードする方法を探しています。

アーカイブを構築するには、rubyzip gem を使用します。これをダウンロードするには、Rails の組み込み関数 send_data のみを使用します。私が抱えている問題は、rubyzip の add-function がファイルをロードするためのパス名を必要とすることです。しかし、同じリクエスト内で csv ファイルが作成されるため、パスはありません。

いくつかのコード:

# 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

パス名を zipfile.add() に渡すことができる、csv ファイルを一時的にディレクトリに保存する方法はありますか?

皆さん、良い週末をお過ごしください。コーディングをお楽しみください。

4

2 に答える 2