aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model
diff options
context:
space:
mode:
authorclaudiob <claudiob@gmail.com>2014-10-16 16:21:24 -0700
committerclaudiob <claudiob@gmail.com>2015-01-02 15:31:55 -0800
commit2386daabe7f8c979b453010dc0de3e1f6bbf859d (patch)
tree74ab7a4ffc32cda7126e3ce8950d21af0c4c4b90 /activemodel/lib/active_model
parent93dd5028a0cd0363d9f4bfc97d9ce70f0f3e88c8 (diff)
downloadrails-2386daabe7f8c979b453010dc0de3e1f6bbf859d.tar.gz
rails-2386daabe7f8c979b453010dc0de3e1f6bbf859d.tar.bz2
rails-2386daabe7f8c979b453010dc0de3e1f6bbf859d.zip
Throw :abort halts default CallbackChains
This commit changes arguments and default value of CallbackChain's :terminator option. After this commit, Chains of callbacks defined **without** an explicit `:terminator` option will be halted as soon as a `before_` callback throws `:abort`. Chains of callbacks defined **with** a `:terminator` option will maintain their existing behavior of halting as soon as a `before_` callback matches the terminator's expectation. For instance, ActiveModel's callbacks will still halt the chain when a `before_` callback returns `false`.
Diffstat (limited to 'activemodel/lib/active_model')
-rw-r--r--activemodel/lib/active_model/callbacks.rb2
-rw-r--r--activemodel/lib/active_model/validations/callbacks.rb2
2 files changed, 2 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/callbacks.rb b/activemodel/lib/active_model/callbacks.rb
index b3d70dc515..061d96a80b 100644
--- a/activemodel/lib/active_model/callbacks.rb
+++ b/activemodel/lib/active_model/callbacks.rb
@@ -103,7 +103,7 @@ module ActiveModel
def define_model_callbacks(*callbacks)
options = callbacks.extract_options!
options = {
- terminator: ->(_,result) { result == false },
+ terminator: ->(_,result_lambda) { result_lambda.call == false },
skip_after_callbacks_if_terminated: true,
scope: [:kind, :name],
only: [:before, :around, :after]
diff --git a/activemodel/lib/active_model/validations/callbacks.rb b/activemodel/lib/active_model/validations/callbacks.rb
index 25ccabd66b..449f1a0299 100644
--- a/activemodel/lib/active_model/validations/callbacks.rb
+++ b/activemodel/lib/active_model/validations/callbacks.rb
@@ -23,7 +23,7 @@ module ActiveModel
included do
include ActiveSupport::Callbacks
define_callbacks :validation,
- terminator: ->(_,result) { result == false },
+ terminator: ->(_,result_lambda) { result_lambda.call == false },
skip_after_callbacks_if_terminated: true,
scope: [:kind, :name]
end