Class: ActiveSupport::Callbacks::Callback
- Defined in:
 - activesupport/lib/active_support/callbacks.rb
 
Overview
:nodoc:
Instance Attribute Summary collapse
- 
  
    
      #chain_config  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute chain_config.
 - 
  
    
      #filter  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute filter.
 - 
  
    
      #kind  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute kind.
 - 
  
    
      #name  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute name.
 
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #apply(callback_sequence)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Wraps code with filter.
 - #compiled ⇒ Object
 - #current_scopes ⇒ Object
 - #duplicates?(other) ⇒ Boolean
 - 
  
    
      #initialize(name, filter, kind, options, chain_config)  ⇒ Callback 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Callback.
 - #matches?(_kind, _filter) ⇒ Boolean
 - #merge_conditional_options(chain, if_option:, unless_option:) ⇒ Object
 
Constructor Details
#initialize(name, filter, kind, options, chain_config) ⇒ Callback
Returns a new instance of Callback.
      245 246 247 248 249 250 251 252 253 254  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 245 def initialize(name, filter, kind, , chain_config) @chain_config = chain_config @name = name @kind = kind @filter = filter @if = check_conditionals([:if]) @unless = check_conditionals([:unless]) compiled end  | 
  
Instance Attribute Details
#chain_config ⇒ Object (readonly)
Returns the value of attribute chain_config.
      243 244 245  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 243 def chain_config @chain_config end  | 
  
#filter ⇒ Object (readonly)
Returns the value of attribute filter.
      243 244 245  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 243 def filter @filter end  | 
  
#kind ⇒ Object
Returns the value of attribute kind.
      242 243 244  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 242 def kind @kind end  | 
  
#name ⇒ Object
Returns the value of attribute name.
      242 243 244  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 242 def name @name end  | 
  
Class Method Details
.build(chain, filter, kind, options) ⇒ Object
      231 232 233 234 235 236 237 238 239 240  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 231 def self.build(chain, filter, kind, ) if filter.is_a?(String) raise ArgumentError, <<-MSG.squish Passing string to define a callback is not supported. See the `.set_callback` documentation to see supported values. MSG end new chain.name, filter, kind, , chain.config end  | 
  
Instance Method Details
#apply(callback_sequence) ⇒ Object
Wraps code with filter
      299 300 301  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 299 def apply(callback_sequence) compiled.apply(callback_sequence) end  | 
  
#compiled ⇒ Object
      281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 281 def compiled @compiled ||= begin user_conditions = conditions_lambdas user_callback = CallTemplate.build(@filter, self) case kind when :before Filters::Before.new(user_callback.make_lambda, user_conditions, chain_config, @filter, name) when :after Filters::After.new(user_callback.make_lambda, user_conditions, chain_config) when :around Filters::Around.new(user_callback, user_conditions) end end end  | 
  
#current_scopes ⇒ Object
      303 304 305  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 303 def current_scopes Array(chain_config[:scope]).map { |s| public_send(s) } end  | 
  
#duplicates?(other) ⇒ Boolean
      272 273 274 275 276 277 278 279  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 272 def duplicates?(other) case @filter when Symbol matches?(other.kind, other.filter) else false end end  | 
  
#matches?(_kind, _filter) ⇒ Boolean
      268 269 270  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 268 def matches?(_kind, _filter) @kind == _kind && filter == _filter end  | 
  
#merge_conditional_options(chain, if_option:, unless_option:) ⇒ Object
      256 257 258 259 260 261 262 263 264 265 266  | 
    
      # File 'activesupport/lib/active_support/callbacks.rb', line 256 def (chain, if_option:, unless_option:) = { if: @if.dup, unless: @unless.dup } [:if].concat Array(unless_option) [:unless].concat Array(if_option) self.class.build chain, @filter, @kind, end  |