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