From eab8267e90bd0ac8c38ebd2ba56efb39c77c2bb2 Mon Sep 17 00:00:00 2001 From: "M.Shibuya" Date: Wed, 19 Jun 2019 15:58:45 +0900 Subject: [PATCH] Do not trigger *_will_change! when file is not to be removed. Fixes #2323 --- lib/carrierwave/orm/activerecord.rb | 5 +++-- spec/orm/activerecord_spec.rb | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/carrierwave/orm/activerecord.rb b/lib/carrierwave/orm/activerecord.rb index a3adbf51f..59320c13c 100644 --- a/lib/carrierwave/orm/activerecord.rb +++ b/lib/carrierwave/orm/activerecord.rb @@ -77,8 +77,9 @@ def #{column}=(new_file) def remove_#{column}=(value) column = _mounter(:#{column}).serialization_column - __send__(:"\#{column}_will_change!") - super + result = super + __send__(:"\#{column}_will_change!") if _mounter(:#{column}).remove? + result end def remove_#{column}! diff --git a/spec/orm/activerecord_spec.rb b/spec/orm/activerecord_spec.rb index 285ad7997..60846cf9d 100644 --- a/spec/orm/activerecord_spec.rb +++ b/spec/orm/activerecord_spec.rb @@ -1249,6 +1249,13 @@ def monkey @event.remove_images = "1" expect(@event.images_changed?).to be_truthy end + + it "should not mark the images as changed if falsey value is assigned" do + @event.remove_images = "0" + expect(@event.images_changed?).to be_falsey + @event.remove_images = "false" + expect(@event.images_changed?).to be_falsey + end end describe "#remote_images_urls=" do