123456789_123456789_123456789_123456789_123456789_

Class: ActiveSupport::Callbacks::Filters::After

Relationships & Source Files
Inherits: Object
Defined in: activesupport/lib/active_support/callbacks.rb

Class Method Summary

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