module RailsBetterFilters

Constants

VERSION

Public Class Methods

included(base) click to toggle source
# File lib/rails-better-filters/rails_better_filters.rb, line 2
def self.included(base)
  base.extend(ClassMethods)
end

Public Instance Methods

dispatch_better_filters(action = nil) click to toggle source
# File lib/rails-better-filters/rails_better_filters.rb, line 6
def dispatch_better_filters(action = nil)
  if !action
    if defined? params && params[:action]
      action = params[:action]
    else
      raise ArgumentError, 'no action given'
    end
  end

  self.class.better_filter_chain_each do |name, callback, only|
    if only.empty? || only.include?(action.to_sym)
      if callback.is_a?(Symbol) && self.respond_to?(callback, true)
        return if false == self.send(callback)
      elsif callback.is_a?(Proc)
        return if false == self.instance_eval(&callback)
      elsif callback.respond_to?(:call)
        return if false == callback.call
      else
        raise ArgumentError, "don't know how to call better_filter #{name} (Callback: #{callback.inspect})"
      end
    end
  end
end