diff options
author | claudiob <claudiob@gmail.com> | 2014-10-16 16:21:24 -0700 |
---|---|---|
committer | claudiob <claudiob@gmail.com> | 2015-01-02 15:31:55 -0800 |
commit | 2386daabe7f8c979b453010dc0de3e1f6bbf859d (patch) | |
tree | 74ab7a4ffc32cda7126e3ce8950d21af0c4c4b90 /activemodel | |
parent | 93dd5028a0cd0363d9f4bfc97d9ce70f0f3e88c8 (diff) | |
download | rails-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')
-rw-r--r-- | activemodel/lib/active_model/callbacks.rb | 2 | ||||
-rw-r--r-- | activemodel/lib/active_model/validations/callbacks.rb | 2 |
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 |