Module: ActiveFedora::Model

Defined in:
lib/active_fedora/model.rb

Overview

ActiveFedora

This module mixes various methods into the including class, much in the way ActiveRecord does.

Class Method Summary collapse

Class Method Details

.classname_from_uri(uri) ⇒ Object

Takes a Fedora URI for a cModel and returns classname, namespace



9
10
11
12
13
# File 'lib/active_fedora/model.rb', line 9

def self.classname_from_uri(uri)
  local_path = uri.split('/')[1]
  parts = local_path.split(':')
  return parts[-1].split(/_/).map(&:camelize).join('::'), parts[0]
end

.from_class_uri(uri) ⇒ Class, False

Takes a Fedora URI for a cModel, and returns a corresponding Model if available This method should reverse ClassMethods#to_class_uri

Returns:

  • (Class, False)

    the class of the model or false, if it does not exist



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/active_fedora/model.rb', line 19

def self.from_class_uri(uri)
  model_value, pid_ns = classname_from_uri(uri)
  raise "model URI incorrectly formatted: #{uri}" unless model_value

  unless class_exists?(model_value)
    ActiveFedora::Base.logger.warn "#{model_value} is not a real class" if ActiveFedora::Base.logger
    return false
  end
  result = ActiveFedora.class_from_string(model_value)
  unless result.nil?
    model_ns = (result.respond_to? :pid_namespace) ? result.pid_namespace : ContentModel::CMODEL_NAMESPACE
    if model_ns != pid_ns
      ActiveFedora::Base.logger.warn "Model class namespace '#{model_ns}' does not match uri: '#{uri}'" if ActiveFedora::Base.logger
    end
  end
  result
end