Class: ActiveSupport::Callbacks::Filters::After
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activesupport/lib/active_support/callbacks.rb |
Class Method Summary
- .build(callback_sequence, user_callback, user_conditions, chain_config)
- .conditional(callback_sequence, user_callback, user_conditions) private
- .halting(callback_sequence, user_callback) private
- .halting_and_conditional(callback_sequence, user_callback, user_conditions) private
- .simple(callback_sequence, user_callback) private
Class Method Details
.build(callback_sequence, user_callback, user_conditions, chain_config)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 216
def self.build(callback_sequence, user_callback, user_conditions, chain_config) if chain_config[:skip_after_callbacks_if_terminated] if user_conditions.any? halting_and_conditional(callback_sequence, user_callback, user_conditions) else halting(callback_sequence, user_callback) end else if user_conditions.any? conditional callback_sequence, user_callback, user_conditions else simple callback_sequence, user_callback end end end
.conditional(callback_sequence, user_callback, user_conditions) (private)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 258
def self.conditional(callback_sequence, user_callback, user_conditions) callback_sequence.after do |env| target = env.target value = env.value if user_conditions.all? { |c| c.call(target, value) } user_callback.call target, value end env end end
.halting(callback_sequence, user_callback) (private)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 247
def self.halting(callback_sequence, user_callback) callback_sequence.after do |env| unless env.halted user_callback.call env.target, env.value end env end end
.halting_and_conditional(callback_sequence, user_callback, user_conditions) (private)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 232
def self.halting_and_conditional(callback_sequence, user_callback, user_conditions) callback_sequence.after do |env| target = env.target value = env.value halted = env.halted if !halted && user_conditions.all? { |c| c.call(target, value) } user_callback.call target, value end env end end
.simple(callback_sequence, user_callback) (private)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 272
def self.simple(callback_sequence, user_callback) callback_sequence.after do |env| user_callback.call env.target, env.value env end end