From 734775edae2d785152ae22fff89c8deccb543afa Mon Sep 17 00:00:00 2001 From: Charles G Date: Wed, 27 Feb 2013 21:41:07 -0800 Subject: [PATCH] Add persisted? check to destroy! --- lib/acts_as_paranoid/core.rb | 2 +- test/test_core.rb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/acts_as_paranoid/core.rb b/lib/acts_as_paranoid/core.rb index 8a9e715..fe3ffd5 100644 --- a/lib/acts_as_paranoid/core.rb +++ b/lib/acts_as_paranoid/core.rb @@ -94,7 +94,7 @@ def destroy! run_callbacks :destroy do destroy_dependent_associations! # Handle composite keys, otherwise we would just use `self.class.primary_key.to_sym => self.id`. - self.class.delete_all!(Hash[[Array(self.class.primary_key), Array(self.id)].transpose]) + self.class.delete_all!(Hash[[Array(self.class.primary_key), Array(self.id)].transpose]) if persisted? self.paranoid_value = self.class.delete_now_value freeze end diff --git a/test/test_core.rb b/test/test_core.rb index edd5fb6..d5f8afb 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -68,8 +68,18 @@ def test_real_removal assert_empty ParanoidTime.with_deleted.all end - def test_removal_not_persisted - assert ParanoidTime.new.destroy + def test_non_persisted_destroy + pt = ParanoidTime.new + assert_nil pt.paranoid_value + pt.destroy + assert_not_nil pt.paranoid_value + end + + def test_non_persisted_destroy! + pt = ParanoidTime.new + assert_nil pt.paranoid_value + pt.destroy! + assert_not_nil pt.paranoid_value end def test_recovery