问题
I would like to know how can I delete all data from Active Storage or even resetting Active Storage? There is any way to do that? Thank you in advance!
NOTE: I'm using Rails 5.2
回答1:
This question challenged me, so I did some test on my dummy app with local storage.
I have the usual model User
which has_one_attached :avatar
On local storage files are saved on /storage
folder, under subfolders named randomly with a string of two characters.
Informations related to files are stored in two tables:
- ActiveStorage::Attachment
- ActiveStorage::Blob
To completely clean the two tables, I did in rails console
:
ActiveStorage::Attachment.all.each { |attachment| attachment.purge }
This command deletes
- All record in that table:
ActiveStorage::Attachment.any? #=> false
- All the blobs:
ActiveStorage::Blob.any? #=> false
- All the files located under
/storage
subfolders; of course, subfolders are still there empty.
The ActiveStorage still works poperly.
I expect the same behaviour for remote storage, having the right privileges.
回答2:
On my local development environment, whenever I perform rails db:reset
, I also run rm -rf storage
to clear all previously-saved files. Rails will automatically recreate the storage
directory the next time a file is uploaded.
来源:https://stackoverflow.com/questions/51175944/remove-all-data-from-active-storage