Allow CSV files for previous runs to be downloaded via the UI #318
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR leverages Active Storage's download link helper to provide download links for CSV attachments associated with previous runs for CSV Tasks. Note that we have to use
Rails.application.routes.url_helpers.rails_blob_path
instead ofrails_blob_path
because the download URL is associated with the host app, not the engine (and additionally, we don't specify Active Storage as a dependency of the engine, so this helper isn't even available to us).Since we're using
run.csv_file.attached?
to check whether to show the download link, I've added preloading for the CSV file attachments when we generate theActiveRecord::Relation
for Runs, as @etiennebarrie suggested. (And we can usewith_attached_csv_file
, since this scope ships out-of-the-box with ActiveStorage)To 🎩
http://localhost:3000/maintenance_tasks/tasks/Maintenance::ImportPostsTask/
sample.csv
fromtest/fixtures/files
Download CSV
link that appears when the Task finishes