diff --git a/lib/carrierwave/orm/activerecord.rb b/lib/carrierwave/orm/activerecord.rb index 59320c13c..99bfa8d56 100644 --- a/lib/carrierwave/orm/activerecord.rb +++ b/lib/carrierwave/orm/activerecord.rb @@ -56,12 +56,13 @@ def mount_base(column, uploader=nil, options={}, &block) validates_processing_of column if uploader_option(column.to_sym, :validate_processing) validates_download_of column if uploader_option(column.to_sym, :validate_download) + after_save :"store_#{column}!" before_save :"write_#{column}_identifier" - after_save :"store_previous_changes_for_#{column}" after_commit :"remove_#{column}!", :on => :destroy after_commit :"mark_remove_#{column}_false", :on => :update + + after_save :"store_previous_changes_for_#{column}" after_commit :"remove_previously_stored_#{column}", :on => :update - after_commit :"store_#{column}!", :on => [:create, :update] mod = Module.new prepend mod diff --git a/spec/orm/activerecord_spec.rb b/spec/orm/activerecord_spec.rb index 2b2d7834c..cb10ab3a0 100644 --- a/spec/orm/activerecord_spec.rb +++ b/spec/orm/activerecord_spec.rb @@ -672,7 +672,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end describe 'normally' do @@ -757,7 +757,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file if old file had a different path" do @@ -780,6 +780,7 @@ def filename Event.transaction do @event.image = stub_file('new.jpeg') @event.save + expect(File.exist?(public_path('uploads/new.jpeg'))).to be_truthy expect(File.exist?(public_path('uploads/old.jpeg'))).to be_truthy raise ActiveRecord::Rollback end @@ -787,45 +788,6 @@ def filename end end - describe "#mount_uploader into transaction" do - before do - @uploader.version :thumb - reset_class("Event") - Event.mount_uploader(:image, @uploader) - @event = Event.new - end - - after do - FileUtils.rm_rf(public_path("uploads")) - end - - it "should not store file during rollback" do - Event.transaction do - @event.image = stub_file('new.jpeg') - @event.save - - raise ActiveRecord::Rollback - end - - expect(File.exist?(public_path('uploads/new.jpeg'))).to be_falsey - end - - it "should not change file during rollback" do - @event.image = stub_file('old.jpeg') - @event.save - - Event.transaction do - @event.image = stub_file('new.jpeg') - @event.save - - raise ActiveRecord::Rollback - end - - expect(File.exist?(public_path('uploads/new.jpeg'))).to be_falsey - expect(File.exist?(public_path('uploads/old.jpeg'))).to be_truthy - end - end - describe '#mount_uploader removing old files with multiple uploaders' do before do @uploader = Class.new(CarrierWave::Uploader::Base) @@ -843,7 +805,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file1 and file2 if old file1 and file2 had a different paths" do @@ -886,7 +848,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file if old file had a different path" do @@ -1434,7 +1396,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end describe 'normally' do @@ -1511,7 +1473,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file if old file had a different path" do @@ -1548,7 +1510,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file1 and file2 if old file1 and file2 had a different paths" do @@ -1590,7 +1552,7 @@ def filename end after do - FileUtils.rm_rf(public_path("uploads")) + FileUtils.rm_rf(file_path("uploads")) end it "should remove old file if old file had a different path" do