提交 d3e7dc6f 编写于 作者: G George Claghorn

Synchronously destroy attachments

上级 99f75820
# frozen_string_literal: true
# Provides delayed purging of attachments or blobs using their +purge_later+ method.
# Provides delayed purging of ActiveStorage::Blob records via ActiveStorage::Blob#purge_later.
class ActiveStorage::PurgeJob < ActiveJob::Base
# FIXME: Limit this to a custom ActiveStorage error
retry_on StandardError
def perform(attachment_or_blob)
attachment_or_blob.purge
def perform(blob)
blob.purge
end
end
......@@ -14,17 +14,15 @@ class ActiveStorage::Attachment < ActiveRecord::Base
delegate_missing_to :blob
# Purging an attachment will purge the blob (delete the file on the service, then destroy the record)
# and then destroy the attachment itself.
# Synchronously purges the blob (deletes it from the configured service) and destroys the attachment.
def purge
blob.purge
destroy
end
# Purging an attachment means purging the blob, which means talking to the service, which means
# talking over the Internet. Whenever you're doing that, it's a good idea to put that work in a job,
# so it doesn't hold up other operations. That's what +purge_later+ provides.
# Destroys the attachment and asynchronously purges the blob (deletes it from the configured service).
def purge_later
ActiveStorage::PurgeJob.perform_later(self)
blob.purge_later
destroy
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册