mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Raise ActiveRecord::InvalidForeignKey
in before_destroy
for a blob if attachments exist
The issue #32584 was fixed in #33405 by adding foreign key constraint to the `active_storage_attachments` table for blobs. This commit implements fix on app-level in order to ensure that users can't delete a blob with attachments even if they don't have the foreign key constraint. See a related discussion in the Campfire: https://3.basecamp.com/3076981/buckets/24956/chats/12416418@1236718899 Note that, we should backport it to `5-2-stable` too. Related to #33405
This commit is contained in:
parent
2df65b6fae
commit
be0d22a8e1
1 changed files with 4 additions and 0 deletions
|
@ -35,6 +35,10 @@ class ActiveStorage::Blob < ActiveRecord::Base
|
|||
|
||||
scope :unattached, -> { left_joins(:attachments).where(ActiveStorage::Attachment.table_name => { blob_id: nil }) }
|
||||
|
||||
before_destroy(prepend: true) do
|
||||
raise ActiveRecord::InvalidForeignKey if attachments.exists?
|
||||
end
|
||||
|
||||
class << self
|
||||
# You can used the signed ID of a blob to refer to it on the client side without fear of tampering.
|
||||
# This is particularly helpful for direct uploads where the client-side needs to refer to the blob
|
||||
|
|
Loading…
Reference in a new issue