Module: Ecoportal::API::Common::BaseClass

Included in:
BaseModel, V1, V1::People, V1::PersonSchemas
Defined in:
lib/ecoportal/api/common/base_class.rb

Instance Method Summary collapse

Instance Method Details

#class_resolver(name, klass) ⇒ Object



6
7
8
9
# File 'lib/ecoportal/api/common/base_class.rb', line 6

def class_resolver(name, klass)
  define_singleton_method(name) { resolve_class(klass) }
  define_method(name) { self.class.resolve_class(klass) }
end

#resolve_class(klass) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ecoportal/api/common/base_class.rb', line 11

def resolve_class(klass)
  @resolved ||= {}
  @resolved[klass] ||=
    case klass
      when Class
        klass
      when String
        Kernel.const_get(klass)
      when Symbol
        resolve_class(self.send(klass))
      else
        raise "Unknown class: #{klass}"
    end
end