class CIMI::Model::Schema::Ref

Public Class Methods

new(name, opts={}, &block) click to toggle source
Calls superclass method CIMI::Model::Schema::Struct.new
# File lib/cimi/models/schema.rb, line 194
def initialize(name, opts={}, &block)
  raise 'The :class attribute must be set' unless opts[:class]
  refname = "#{opts[:class].name.split("::").last}Ref"
  if CIMI::Model::const_defined?(refname)
    @klass = CIMI::Model::const_get(refname)
  else
    @klass = Class.new(opts[:class]) do |m|
      scalar :href
    end
    CIMI::Model::const_set(refname, @klass)
  end
  @klass.class_eval { def href?; !href.nil?; end }
  opts[:schema] = @klass.schema
  super(name, opts, &block)
end

Public Instance Methods

href?() click to toggle source
# File lib/cimi/models/schema.rb, line 205
def href?; !href.nil?; end
valid?(value) click to toggle source

The 'ref' could be the reference to a CIMI entity or the full CIMI entity representation.

# File lib/cimi/models/schema.rb, line 213
def valid?(value)
  !value.href.nil? || @klass.schema.required_attributes.all? { |a|
    a.valid?(value.send(a.name))
  }
end