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

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

Instance Method Details

#freezeObject



85
86
87
88
89
90
# File 'lib/active_fedora/core.rb', line 85

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'


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

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 = 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:



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/active_fedora/core.rb', line 31

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

  yield self if block_given?
  _run_initialize_callbacks
end

#inspectObject

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



95
96
97
98
99
100
101
102
# File 'lib/active_fedora/core.rb', line 95

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.



58
59
60
61
62
63
64
65
# File 'lib/active_fedora/core.rb', line 58

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.



49
50
51
52
53
54
55
# File 'lib/active_fedora/core.rb', line 49

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