Module: ActiveFedora::Core

Extended by:
ActiveSupport::Autoload, ActiveSupport::Concern
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

Instance Method Details

#==(comparison_object) ⇒ Object



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

def ==(comparison_object)
     comparison_object.equal?(self) ||
       (comparison_object.instance_of?(self.class) &&
         comparison_object.id == id &&
         !comparison_object.new_record?)
end

#freezeObject



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

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

#frozen?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/active_fedora/core.rb', line 82

def frozen?
  attached_files.frozen?
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'


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

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:



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

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
  self.attributes = attributes

  yield self if block_given?
  run_callbacks :initialize
end

#ldp_sourceObject



18
19
20
# File 'lib/active_fedora/core.rb', line 18

def ldp_source
  @ldp_source
end

#readonly!Object

Marks this record as read only.



93
94
95
# File 'lib/active_fedora/core.rb', line 93

def readonly!
  @readonly = true
end

#readonly?Boolean

Returns true if the record is read only. Records loaded through joins with piggy-back attributes will be marked as read only since they cannot be saved.

Returns:

  • (Boolean)


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

def readonly?
  @readonly
end

#reloadObject

Reloads the object from Fedora.



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

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