class ActiveAdmin::ResourceCollection

This is a container for resources, which acts much like a Hash. It’s assumed that an added resource responds to ‘resource_name`.

Public Class Methods

new() click to toggle source
# File lib/active_admin/resource_collection.rb, line 9
def initialize
  @collection = {}
end

Public Instance Methods

[](obj) click to toggle source
# File lib/active_admin/resource_collection.rb, line 27
def [](obj)
  @collection[obj] || find_resource(obj)
end
add(resource) click to toggle source
# File lib/active_admin/resource_collection.rb, line 13
def add(resource)
  if match = @collection[resource.resource_name]
    raise_if_mismatched! match, resource
    match
  else
    @collection[resource.resource_name] = resource
  end
end
each(&block) click to toggle source

Changes ‘each` to pass in the value, instead of both the key and value.

# File lib/active_admin/resource_collection.rb, line 23
def each(&block)
  values.each &block
end

Private Instance Methods

find_resource(obj) click to toggle source

Finds a resource based on the resource name, resource class, or base class.

# File lib/active_admin/resource_collection.rb, line 34
def find_resource(obj)
  resources.detect do |r|
    r.resource_name.to_s == obj.to_s
  end || resources.detect do |r|
    r.resource_class.to_s == obj.to_s
  end ||
  if obj.respond_to? :base_class
    resources.detect{ |r| r.resource_class.to_s == obj.base_class.to_s }
  end
end
raise_if_mismatched!(existing, given) click to toggle source
# File lib/active_admin/resource_collection.rb, line 49
def raise_if_mismatched!(existing, given)
  if existing.class != given.class
    raise IncorrectClass.new existing, given
  elsif given.class <= Resource && existing.resource_class != given.resource_class
    raise ConfigMismatch.new existing, given
  end
end
resources() click to toggle source
# File lib/active_admin/resource_collection.rb, line 45
def resources
  select{ |r| r.class <= Resource } # can otherwise be a Page
end