从 Active Storage 中删除所有数据?
Remove all data from Active Storage?
我想知道如何从 Active Storage 中删除所有数据甚至重置 Active Storage?有什么办法吗?提前致谢!
注意:我使用的是 Rails 5.2
这个问题对我提出了挑战,所以我用本地存储在我的虚拟应用程序上做了一些测试。
我有常用型号 User
has_one_attached :avatar
在本地存储中,文件保存在 /storage
文件夹中,在随机命名的子文件夹下,由两个字符组成。
与文件相关的信息存储在两个table中:
彻底清理两个tables,我在rails console
:
ActiveStorage::Attachment.all.each { |attachment| attachment.purge }
此命令删除
- table中的所有记录:
ActiveStorage::Attachment.any? #=> false
- 所有斑点:
ActiveStorage::Blob.any? #=> false
- 位于
/storage
个子文件夹下的所有文件;当然,子文件夹仍然是空的。
ActiveStorage 仍然正常工作。
我希望远程存储具有相同的行为,具有正确的权限。
在我的本地开发环境中,每当我执行 rails db:reset
时,我也会 运行 rm -rf storage
清除所有 previously-saved 文件。 Rails 将在下次上传文件时自动重新创建 storage
目录。
毫无疑问ActiveStorage::Attachment.all.each { |attachment| attachment.purge }
会清除所有记录,但如果你有很多文件,这将花费很长时间。
对于开发环境,您可以简单地从数据库中删除所有附件记录,并从 storage
文件夹中删除 remove
文件。
运行 rails dbconsole
并执行以下查询以删除附件记录。
delete from active_storage_attachments;
如果您在数据库中存储变体:
delete from active_storage_variant_records;
最后,
delete from active_storage_blobs;
我想知道如何从 Active Storage 中删除所有数据甚至重置 Active Storage?有什么办法吗?提前致谢!
注意:我使用的是 Rails 5.2
这个问题对我提出了挑战,所以我用本地存储在我的虚拟应用程序上做了一些测试。
我有常用型号 User
has_one_attached :avatar
在本地存储中,文件保存在 /storage
文件夹中,在随机命名的子文件夹下,由两个字符组成。
与文件相关的信息存储在两个table中:
彻底清理两个tables,我在rails console
:
ActiveStorage::Attachment.all.each { |attachment| attachment.purge }
此命令删除
- table中的所有记录:
ActiveStorage::Attachment.any? #=> false
- 所有斑点:
ActiveStorage::Blob.any? #=> false
- 位于
/storage
个子文件夹下的所有文件;当然,子文件夹仍然是空的。
ActiveStorage 仍然正常工作。
我希望远程存储具有相同的行为,具有正确的权限。
在我的本地开发环境中,每当我执行 rails db:reset
时,我也会 运行 rm -rf storage
清除所有 previously-saved 文件。 Rails 将在下次上传文件时自动重新创建 storage
目录。
毫无疑问ActiveStorage::Attachment.all.each { |attachment| attachment.purge }
会清除所有记录,但如果你有很多文件,这将花费很长时间。
对于开发环境,您可以简单地从数据库中删除所有附件记录,并从 storage
文件夹中删除 remove
文件。
运行 rails dbconsole
并执行以下查询以删除附件记录。
delete from active_storage_attachments;
如果您在数据库中存储变体:
delete from active_storage_variant_records;
最后,
delete from active_storage_blobs;