Module: ActiveFedora::Core

Extended by:
ActiveSupport::Autoload, ActiveSupport::Concern
Includes:
Common
Included in:
Base
Defined in:
lib/active_fedora/core.rb,
lib/active_fedora/core/fedora_id_translator.rb,
lib/active_fedora/core/fedora_uri_translator.rb

Defined Under Namespace

Modules: ClassMethods Classes: FedoraIdTranslator, FedoraUriTranslator

Instance Method Summary collapse

Methods included from Common

#<=>, #==, #frozen?, #ldp_source, #readonly!, #readonly?

Instance Method Details

#freezeObject



78
79
80
81
82
83
# File 'lib/active_fedora/core.rb', line 78

def freeze
  @resource.freeze
  # @attributes = @attributes.clone.freeze
  attached_files.freeze
  self
end

#init_with_resource(rdf_resource) ⇒ Object

Initialize an empty model object and set its resource example:

class Post < ActiveFedora::Base
end

post = Post.allocate
post.init_with_resource(Ldp::Resource.new('http://example.com/post/1'))
post.title # => 'hello world'


69
70
71
72
73
74
75
76
# File 'lib/active_fedora/core.rb', line 69

def init_with_resource(rdf_resource)
  init_internals
  @ldp_source = rdf_resource
  load_attached_files
  run_callbacks :find
  run_callbacks :initialize
  self
end

#initialize(attributes_or_id = nil) {|_self| ... } ⇒ Object

Constructor. You may supply a custom :id, or we call the Fedora Rest API for the next available Fedora id, and mark as new object. Also, if attrs does not contain :id but does contain :namespace it will pass the :namespace value to Fedora::Repository.nextid to generate the next id available within the given namespace.

Yields:

  • (_self)

Yield Parameters:

Raises:



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/active_fedora/core.rb', line 25

def initialize(attributes_or_id = nil, &_block)
  init_internals
  attributes = initialize_attributes(attributes_or_id)
  @ldp_source = build_ldp_resource(attributes.delete(:id))
  raise IllegalOperation, "Attempting to recreate existing ldp_source: `#{ldp_source.subject}'" unless ldp_source.new?
  assert_content_model
  load_attached_files
  assign_attributes(attributes) if attributes

  yield self if block_given?
  _run_initialize_callbacks
end

#inspectObject

Returns the contents of the record as a nicely formatted string.



88
89
90
91
92
93
94
95
# File 'lib/active_fedora/core.rb', line 88

def inspect
  inspection = ["id: #{id.inspect}"]
  inspection += self.class.attribute_names.collect do |name|
    "#{name}: #{attribute_for_inspect(name)}" if has_attribute?(name)
  end

  "#<#{self.class} #{inspection.compact.join(', ')}>"
end

#reloadObject

Reloads the object from Fedora.



51
52
53
54
55
56
57
58
# File 'lib/active_fedora/core.rb', line 51

def reload
  check_persistence unless persisted?
  clear_association_cache
  clear_attached_files
  refresh
  load_attached_files
  self
end

#uri=(uri) ⇒ Object

Note:

This can only be run on an unpersisted resource.

Parameters:

  • uri (#to_s)

    a full fedora URI or relative ID to set this resource to.



42
43
44
45
46
47
48
# File 'lib/active_fedora/core.rb', line 42

def uri=(uri)
  if persisted?
    raise AlreadyPersistedError, "You can not set a URI for a persisted ActiveFedora object."
  else
    @ldp_source = build_ldp_resource(self.class.uri_to_id(uri))
  end
end