Class: Hyrax::Resource
Overview
Note:
Hyrax permissions are managed via [Access Control List](en.wikipedia.org/wiki/Access-control_list) style permissions. Legacy Hyrax models powered by ‘ActiveFedora` linked the ACLs from the repository object itself (as an `acl:accessControl` link to a container). Valkyrie models jettison that approach in favor of relying on links back from the permissions using `access_to`. As was the case in the past implementation, we include an object to represent the access list itself (`Hyrax::AccessControl`). This object’s ‘#access_to` is the way Hyrax discovers list entries–it MUST match between the `AccessControl` and its individual `Permissions`.
The effect of this change is that our ‘AccessControl` objects are detached from `Hyrax::Resource` they can (and usually should) be edited and persisted independently from the resource itself.
Some utilitiy methods are provided for ergonomics in transitioning from ‘ActiveFedora`: the `#visibility` accessor, and the `#*_users` and `#*_group` accessors. The main purpose of these is to provide a cached ACL attached to a given Resource instance. However, these will likely be deprecated in the future, and it’s advisable to avoid them in favor of ‘Hyrax::AccessControlList`, `Hyrax::PermissionManager` and/or `Hyrax::VisibilityWriter` (which provide their underlying implementations).
The base Valkyrie model for Hyrax.
Class Method Summary
collapse
Instance Method Summary
collapse
#embargo, #embargo=, #lease, #lease=
Methods included from WithEvents
#event_class, #events, #log_event, #stream
Class Method Details
.acts_as_flexible_resource ⇒ Object
.collection? ⇒ Boolean
71
72
73
|
# File 'app/models/hyrax/resource.rb', line 71
def collection?
pcdm_collection?
end
|
.file? ⇒ Boolean
77
78
79
|
# File 'app/models/hyrax/resource.rb', line 77
def file?
false
end
|
.file_set? ⇒ Boolean
83
84
85
|
# File 'app/models/hyrax/resource.rb', line 83
def file_set?
false
end
|
.flexible? ⇒ Boolean
59
60
61
|
# File 'app/models/hyrax/resource.rb', line 59
def flexible?
defined?(super) ? super : false
end
|
.human_readable_type ⇒ String
Returns a human readable name for the model.
65
66
67
|
# File 'app/models/hyrax/resource.rb', line 65
def human_readable_type
I18n.translate("hyrax.models.#{model_name.i18n_key}", default: model_name.human)
end
|
.inherited(subclass) ⇒ Object
48
49
50
51
|
# File 'app/models/hyrax/resource.rb', line 48
def inherited(subclass)
super
subclass.acts_as_flexible_resource if Hyrax.config.flexible_classes.include?(subclass.name)
end
|
.pcdm_collection? ⇒ Boolean
89
90
91
|
# File 'app/models/hyrax/resource.rb', line 89
def pcdm_collection?
false
end
|
.pcdm_object? ⇒ Boolean
95
96
97
|
# File 'app/models/hyrax/resource.rb', line 95
def pcdm_object?
false
end
|
.to_rdf_representation ⇒ String
109
110
111
|
# File 'app/models/hyrax/resource.rb', line 109
def to_rdf_representation
name
end
|
.work? ⇒ Boolean
Works are PCDM Objects which are not File Sets.
103
104
105
|
# File 'app/models/hyrax/resource.rb', line 103
def work?
pcdm_object? && !file_set?
end
|
Instance Method Details
#==(other) ⇒ Object
177
178
179
|
# File 'app/models/hyrax/resource.rb', line 177
def ==(other)
attributes.except(:created_at, :updated_at) == other.attributes.except(:created_at, :updated_at) if other.respond_to?(:attributes)
end
|
#collection? ⇒ Boolean
130
131
132
|
# File 'app/models/hyrax/resource.rb', line 130
def collection?
self.class.collection?
end
|
#file? ⇒ Boolean
136
137
138
|
# File 'app/models/hyrax/resource.rb', line 136
def file?
self.class.file?
end
|
#file_set? ⇒ Boolean
142
143
144
|
# File 'app/models/hyrax/resource.rb', line 142
def file_set?
self.class.file_set?
end
|
#flexible? ⇒ Boolean
124
125
126
|
# File 'app/models/hyrax/resource.rb', line 124
def flexible?
self.class.flexible?
end
|
#pcdm_collection? ⇒ Boolean
148
149
150
|
# File 'app/models/hyrax/resource.rb', line 148
def pcdm_collection?
self.class.pcdm_collection?
end
|
#pcdm_object? ⇒ Boolean
154
155
156
|
# File 'app/models/hyrax/resource.rb', line 154
def pcdm_object?
self.class.pcdm_object?
end
|
#permission_manager ⇒ Object
181
182
183
|
# File 'app/models/hyrax/resource.rb', line 181
def permission_manager
@permission_manager ||= Hyrax::PermissionManager.new(resource: self)
end
|
#to_rdf_representation ⇒ String
160
161
162
|
# File 'app/models/hyrax/resource.rb', line 160
def to_rdf_representation
self.class.to_rdf_representation
end
|
#visibility ⇒ Object
189
190
191
|
# File 'app/models/hyrax/resource.rb', line 189
def visibility
visibility_reader.read
end
|
#visibility=(value) ⇒ Object
185
186
187
|
# File 'app/models/hyrax/resource.rb', line 185
def visibility=(value)
visibility_writer.assign_access_for(visibility: value)
end
|
#wings? ⇒ Boolean
Its nice to know if a record is still in AF or not
173
174
175
|
# File 'app/models/hyrax/resource.rb', line 173
def wings?
respond_to?(:head) && respond_to?(:tail)
end
|
#work? ⇒ Boolean
Works are PCDM Objects which are not File Sets.
168
169
170
|
# File 'app/models/hyrax/resource.rb', line 168
def work?
self.class.work?
end
|