Module: ActiveFedora::Core

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_fedora/core.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#==(comparison_object) ⇒ Object


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

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

#freezeObject


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

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

#frozen?Boolean


91
92
93
# File 'lib/active_fedora/core.rb', line 91

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'

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

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:


36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/active_fedora/core.rb', line 36

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


27
28
29
# File 'lib/active_fedora/core.rb', line 27

def ldp_source
  @ldp_source
end

#readonly!Object

Marks this record as read only.


102
103
104
# File 'lib/active_fedora/core.rb', line 102

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.


97
98
99
# File 'lib/active_fedora/core.rb', line 97

def readonly?
  @readonly
end

#reloadObject

Reloads the object from Fedora.


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

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