protected Method

ClassMethods.class_for_filter(filter, filter_type)

The determination of the filter type was once done at run time. This method is here to extract as much logic from the filter run time as possible

Source Code

# File action_controller/filters.rb, line 579
def class_for_filter(filter, filter_type) #:nodoc:
  case
  when filter.is_a?(Symbol)
    SymbolFilter
  when filter.respond_to?(:call)
    if filter.is_a?(Method)
      MethodFilter
    else
      case filter.arity
      when 1; ProcFilter
      when 2; ProcWithCallFilter
      else raise ArgumentError, 'Filter blocks must take one or two arguments.'
      end
    end
  when filter.respond_to?(:filter)
    ClassFilter
  when filter.respond_to?(:before) && filter_type == :before
    ClassBeforeFilter
  when filter.respond_to?(:after) && filter_type == :after
    ClassAfterFilter
  else
    raise(ActionControllerError, 'A filter must be a Symbol, Proc, Method, or object responding to filter, after or before.')
  end
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.