diff --git a/lib/mongoid/alize/to_callback.rb b/lib/mongoid/alize/to_callback.rb index b8b14d7..03d1786 100644 --- a/lib/mongoid/alize/to_callback.rb +++ b/lib/mongoid/alize/to_callback.rb @@ -132,7 +132,11 @@ def set_callback def set_destroy_callback unless callback_attached?("destroy", aliased_destroy_callback_name) - klass.set_callback(:destroy, :after, aliased_destroy_callback_name) + if self.metadata.dependent == :restrict + klass.set_callback(:destroy, :after, aliased_destroy_callback_name) + else + klass.set_callback(:destroy, :before, aliased_destroy_callback_name) + end end end diff --git a/spec/mongoid/alize/to_callback_spec.rb b/spec/mongoid/alize/to_callback_spec.rb index 0f499f6..73846d1 100644 --- a/spec/mongoid/alize/to_callback_spec.rb +++ b/spec/mongoid/alize/to_callback_spec.rb @@ -69,7 +69,7 @@ def define_and_create(callback_name=:define_callback) describe "#set_destroy_callback" do it "should set a destroy callback on the klass" do - mock(@callback.klass).set_callback(:destroy, :after, "denormalize_destroy_to_head") + mock(@callback.klass).set_callback(:destroy, :before, "denormalize_destroy_to_head") @callback.send(:set_destroy_callback) end