diff --git a/lib/active_resource/base.rb b/lib/active_resource/base.rb index 29376f081d..2df165b57b 100644 --- a/lib/active_resource/base.rb +++ b/lib/active_resource/base.rb @@ -1442,7 +1442,9 @@ def encode(options = {}) # my_branch.reload # my_branch.name # => "Wilson Road" def reload - self.load(self.class.find(to_param, params: @prefix_options).attributes, false, true) + run_callbacks :reload do + self.load(self.class.find(to_param, params: @prefix_options).attributes, false, true) + end end # A method to manually load attributes from a \hash. Recursively loads collections of diff --git a/lib/active_resource/callbacks.rb b/lib/active_resource/callbacks.rb index c8f04cec94..d9ce8d0c38 100644 --- a/lib/active_resource/callbacks.rb +++ b/lib/active_resource/callbacks.rb @@ -8,6 +8,7 @@ module Callbacks CALLBACKS = [ :before_validation, :after_validation, :before_save, :around_save, :after_save, + :before_reload, :around_reload, :after_reload, :before_create, :around_create, :after_create, :before_update, :around_update, :after_update, :before_destroy, :around_destroy, :after_destroy ] @@ -16,7 +17,7 @@ module Callbacks extend ActiveModel::Callbacks include ActiveModel::Validations::Callbacks - define_model_callbacks :save, :create, :update, :destroy + define_model_callbacks :save, :reload, :create, :update, :destroy end end end diff --git a/test/cases/callbacks_test.rb b/test/cases/callbacks_test.rb index f8986e7752..2d677d8701 100644 --- a/test/cases/callbacks_test.rb +++ b/test/cases/callbacks_test.rb @@ -101,6 +101,21 @@ def test_create ], developer.history end + def test_reload + developer = Developer.find(1) + developer.reload + assert_equal [ + [ :before_reload, :method ], + [ :before_reload, :proc ], + [ :before_reload, :object ], + [ :before_reload, :block ], + [ :after_reload, :method ], + [ :after_reload, :proc ], + [ :after_reload, :object ], + [ :after_reload, :block ] + ], developer.history + end + def test_update developer = Developer.find(1) developer.save