module ActiveInteraction::Extras::FilterExtensions::ObjectClasses

Add support for polymorphic objects

object :account, class: [Account, AnyoneAccount]

Public Instance Methods

class_list() click to toggle source
# File lib/active_interaction/extras/filter_extensions/object_classes.rb, line 7
def class_list
  class_names.map do |klass_name|
    case klass_name
    when Class
      klass_name
    else
      begin
        Object.const_get(klass_name.to_s.camelize)
      rescue NameError
        raise ActiveInteraction::InvalidNameError, "class #{klass_name.inspect} does not exist"
      end
    end
  end
end
class_names() click to toggle source
# File lib/active_interaction/extras/filter_extensions/object_classes.rb, line 38
def class_names
  options.fetch(:class, name)
end
klass() click to toggle source
Calls superclass method
# File lib/active_interaction/extras/filter_extensions/object_classes.rb, line 22
def klass
  if polymorphic?
    class_list.first
  else
    super
  end
end
matches?(value) click to toggle source
Calls superclass method
# File lib/active_interaction/extras/filter_extensions/object_classes.rb, line 30
def matches?(value)
  if polymorphic?
    class_list.any? { |klass| value.class <= klass }
  else
    super
  end
end
polymorphic?() click to toggle source
# File lib/active_interaction/extras/filter_extensions/object_classes.rb, line 42
def polymorphic?
  class_names.is_a? Array
end