class CIMI::Model::Base

We need to reopen Base and add some stuff to avoid circular dependencies

Attributes

collection_class[RW]

Public Class Methods

acts_as_root_entity(opts = {}) click to toggle source
# File lib/cimi/models/collection.rb, line 110
def acts_as_root_entity(opts = {})
  self.collection_class = Collection.generate(self)
  CIMI::Model.register_as_root_entity! self, opts
end
all(context) click to toggle source
# File lib/cimi/models/collection.rb, line 134
def self.all(context)
  find(:all, context)
end
list(context) click to toggle source

Return a collection of entities

# File lib/cimi/models/collection.rb, line 116
def list(context)
  entries = find(:all, context)
  desc = "#{self.name.split("::").last} Collection for the #{context.driver.name.capitalize} driver"
  id = context.send("#{collection_class.entry_name}_url")
  ops = []
  create = "create_#{collection_class.entry_name.to_s.singularize}_url"
  if context.respond_to?(create)
    url = context.send(create)
    ops << { :rel => "add", :href => url }
  end
  collection_class.new(:id => id, :name => 'default',
                       :count => entries.size,
                       :entries => entries,
                       :operations => ops,
                       :description => desc)
end

Public Instance Methods

filter_attributes(attr_list) click to toggle source
# File lib/cimi/models/base.rb, line 281
def filter_attributes(attr_list)
  attrs = attr_list.inject({}) do |result, attr|
    result[attr] = self.send(attr) if self.respond_to?(attr)
    result
  end
  self.class.new(attrs)
end