From cfaf173b9f94b1ae3cb705f8b3eb1a55a8200921 Mon Sep 17 00:00:00 2001 From: Yohta Kimura Date: Sun, 24 Sep 2023 19:35:38 +0900 Subject: [PATCH] allow remove_image to be cancelled --- lib/carrierwave/mounter.rb | 2 +- lib/carrierwave/uploader/store.rb | 2 +- spec/orm/activerecord_spec.rb | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/carrierwave/mounter.rb b/lib/carrierwave/mounter.rb index dbe9dafe5..44044d7b9 100644 --- a/lib/carrierwave/mounter.rb +++ b/lib/carrierwave/mounter.rb @@ -168,7 +168,7 @@ def blank? def remove=(value) @remove = value - write_temporary_identifier if remove? + write_temporary_identifier end def remove? diff --git a/lib/carrierwave/uploader/store.rb b/lib/carrierwave/uploader/store.rb index 16a09ca04..55d0c0640 100644 --- a/lib/carrierwave/uploader/store.rb +++ b/lib/carrierwave/uploader/store.rb @@ -87,7 +87,7 @@ def store!(new_file=nil) end @file = new_file @identifier = storage.identifier - @cache_id = @deduplication_index = nil + @original_filename = @cache_id = @deduplication_index = nil @staged = false end end diff --git a/spec/orm/activerecord_spec.rb b/spec/orm/activerecord_spec.rb index 18316917b..7dcbc781d 100644 --- a/spec/orm/activerecord_spec.rb +++ b/spec/orm/activerecord_spec.rb @@ -426,6 +426,17 @@ def monkey expect(@event.image_identifier).to eq(nil) end + it "should cancel removing image if remove_image is switched to false" do + @event.image = stub_file('test.jpeg') + @event.save! + @event.remove_image = true + @event.remove_image = false + @event.save! + @event.reload + expect(@event[:image]).to eq('test.jpeg') + expect(@event.image_identifier).to eq('test.jpeg') + end + it "should mark image as changed when saving a new image" do expect(@event.image_changed?).to be_falsey @event.image = stub_file("test.jpeg") @@ -1394,6 +1405,17 @@ def monkey expect(@event.images_identifiers[0]).to eq(nil) end + it "should cancel removing images if remove_images is switched to false" do + @event.images = [stub_file('test.jpeg')] + @event.save! + @event.remove_images = true + @event.remove_images = false + @event.save! + @event.reload + expect(@event[:images]).to eq(['test.jpeg']) + expect(@event.images_identifiers[0]).to eq('test.jpeg') + end + it "should mark images as changed when saving a new images" do expect(@event.images_changed?).to be_falsey @event.images = [stub_file("test.jpeg")]