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
  @resources = {}
end

Public Instance Methods

[](klass) click to toggle source

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

# File lib/active_admin/resource_collection.rb, line 23
def [](klass)
  if match = @resources[klass]
    match
  elsif match = real_resources.detect{ |r| r.resource_class.to_s == klass.to_s }
    match
  elsif klass.respond_to? :base_class
    real_resources.detect{ |r| r.resource_class.to_s == klass.base_class.to_s }
  end
end
add(resource) click to toggle source
# File lib/active_admin/resource_collection.rb, line 13
def add(resource)
  self[resource.resource_name] ||= resource
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 18
def each(&block)
  values.each &block
end

Private Instance Methods

real_resources() click to toggle source

REFACTOR: ResourceCollection currently stores Resource and Page objects. That doesn't make sense, because by definition a ResourceCollection is a collection of resources.

# File lib/active_admin/resource_collection.rb, line 37
def real_resources
  select{ |r| r.respond_to? :resource_class }
end