diff options
author | George Claghorn <george@basecamp.com> | 2018-07-13 12:17:33 -0400 |
---|---|---|
committer | George Claghorn <george@basecamp.com> | 2018-07-13 12:17:33 -0400 |
commit | d20d6c732613dcc7276cb57d451e2a3bf573df19 (patch) | |
tree | d1af70d71ad09b3f688eb60dd094c5872af4eecd | |
parent | 63951072afc371e1393f3e185bee72e1bdcfdcfe (diff) | |
download | rails-d20d6c732613dcc7276cb57d451e2a3bf573df19.tar.gz rails-d20d6c732613dcc7276cb57d451e2a3bf573df19.tar.bz2 rails-d20d6c732613dcc7276cb57d451e2a3bf573df19.zip |
Fix that detaching could purge
-rw-r--r-- | activestorage/lib/active_storage/attached/many.rb | 2 | ||||
-rw-r--r-- | activestorage/lib/active_storage/attached/one.rb | 2 | ||||
-rw-r--r-- | activestorage/test/models/attached/many_test.rb | 17 | ||||
-rw-r--r-- | activestorage/test/models/attached/one_test.rb | 15 |
4 files changed, 34 insertions, 2 deletions
diff --git a/activestorage/lib/active_storage/attached/many.rb b/activestorage/lib/active_storage/attached/many.rb index 204d6604c8..073cc013d8 100644 --- a/activestorage/lib/active_storage/attached/many.rb +++ b/activestorage/lib/active_storage/attached/many.rb @@ -41,7 +41,7 @@ module ActiveStorage # Deletes associated attachments without purging them, leaving their respective blobs in place. def detach - attachments.destroy_all if attached? + attachments.delete_all if attached? end ## diff --git a/activestorage/lib/active_storage/attached/one.rb b/activestorage/lib/active_storage/attached/one.rb index 960ff99e63..4a6bb1ffaa 100644 --- a/activestorage/lib/active_storage/attached/one.rb +++ b/activestorage/lib/active_storage/attached/one.rb @@ -45,7 +45,7 @@ module ActiveStorage # Deletes the attachment without purging it, leaving its blob in place. def detach if attached? - attachment.destroy + attachment.delete write_attachment nil end end diff --git a/activestorage/test/models/attached/many_test.rb b/activestorage/test/models/attached/many_test.rb index c4510a9e84..a9ff6eecc6 100644 --- a/activestorage/test/models/attached/many_test.rb +++ b/activestorage/test/models/attached/many_test.rb @@ -315,6 +315,23 @@ class ActiveStorage::ManyAttachedTest < ActiveSupport::TestCase end end + test "detaching" do + [ create_blob(filename: "funky.jpg"), create_blob(filename: "town.jpg") ].tap do |blobs| + @user.highlights.attach blobs + assert @user.highlights.attached? + + perform_enqueued_jobs do + @user.highlights.detach + end + + assert_not @user.highlights.attached? + assert ActiveStorage::Blob.exists?(blobs.first.id) + assert ActiveStorage::Blob.exists?(blobs.second.id) + assert ActiveStorage::Blob.service.exist?(blobs.first.key) + assert ActiveStorage::Blob.service.exist?(blobs.second.key) + end + end + test "purging" do [ create_blob(filename: "funky.jpg"), create_blob(filename: "town.jpg") ].tap do |blobs| @user.highlights.attach blobs diff --git a/activestorage/test/models/attached/one_test.rb b/activestorage/test/models/attached/one_test.rb index 716190bc53..177a6c84e6 100644 --- a/activestorage/test/models/attached/one_test.rb +++ b/activestorage/test/models/attached/one_test.rb @@ -317,6 +317,21 @@ class ActiveStorage::OneAttachedTest < ActiveSupport::TestCase end end + test "detaching" do + create_blob(filename: "funky.jpg").tap do |blob| + @user.avatar.attach blob + assert @user.avatar.attached? + + perform_enqueued_jobs do + @user.avatar.detach + end + + assert_not @user.avatar.attached? + assert ActiveStorage::Blob.exists?(blob.id) + assert ActiveStorage::Blob.service.exist?(blob.key) + end + end + test "purging" do create_blob(filename: "funky.jpg").tap do |blob| @user.avatar.attach blob |