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