@@ -50,23 +50,6 @@ def configure
5050 define_model_callbacks :remove
5151 end
5252
53- # Delete the paranoid +Document+ from the database completely. This will
54- # run the destroy callbacks.
55- #
56- # @example Hard destroy the document.
57- # document.destroy!
58- #
59- # @return [ true, false ] If the operation succeeded.
60- #
61- # @since 1.0.0
62- def destroy!
63- run_callbacks ( :destroy ) do
64- run_callbacks ( :remove ) do
65- delete!
66- end
67- end
68- end
69-
7053 # Override the persisted method to allow for the paranoia gem.
7154 # If a paranoid record is selected, then we only want to check
7255 # if it's a new record, not if it is "destroyed"
@@ -92,34 +75,41 @@ def persisted?
9275 # @return [ true ] True.
9376 #
9477 # @since 1.0.0
95- alias orig_remove :remove
78+ alias :orig_delete :delete
9679
9780 def remove ( _ = { } )
98- return false unless catch ( :abort ) do
99- if respond_to? ( :apply_destroy_dependencies! )
100- apply_destroy_dependencies!
101- else
102- apply_delete_dependencies!
103- end
104- end
10581 time = self . deleted_at = Time . now
10682 _paranoia_update ( '$set' => { paranoid_field => time } )
10783 @destroyed = true
10884 true
10985 end
11086
111- alias delete :remove
87+ alias :delete :remove
88+ alias :delete! :orig_delete
11289
113- # Delete the paranoid +Document+ from the database completely.
90+ # Delete the paranoid +Document+ from the database completely. This will
91+ # run the destroy and remove callbacks.
11492 #
115- # @example Hard delete the document.
116- # document.delete !
93+ # @example Hard destroy the document.
94+ # document.destroy !
11795 #
11896 # @return [ true, false ] If the operation succeeded.
11997 #
12098 # @since 1.0.0
121- def delete!
122- orig_remove
99+ def destroy! ( options = { } )
100+ raise Errors ::ReadonlyDocument . new ( self . class ) if readonly?
101+ self . flagged_for_destroy = true
102+ result = run_callbacks ( :destroy ) do
103+ run_callbacks ( :remove ) do
104+ if catch ( :abort ) { apply_destroy_dependencies! }
105+ delete! ( options || { } )
106+ else
107+ false
108+ end
109+ end
110+ end
111+ self . flagged_for_destroy = false
112+ result
123113 end
124114
125115 # Determines if this document is destroyed.
0 commit comments