Module: Hyrax::ArResource
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/hyrax/ar_resource.rb
Overview
An optional model to bring active record like accessors to your Valkyrie resources. This is simply for simplicity in the console and backward compatibility.
Instance Method Summary collapse
-
#destroy(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) ⇒ Boolean
This will delete the resource and publish its delete event.
- #destroy!(**opts) ⇒ Object
- #parent(query_service: Hyrax.query_service) ⇒ NilClass, Valkyrie::Resource
-
#save(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) ⇒ Valkyrie::Resource
(also: #create, #update)
This will persist the object to the repository.
- #save!(**opts) ⇒ Object (also: #create!, #update!)
Instance Method Details
#destroy(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) ⇒ Boolean
This will delete the resource and publish its delete event
92 93 94 95 96 97 98 |
# File 'app/models/concerns/hyrax/ar_resource.rb', line 92 def destroy(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) return false unless persisted? persister.delete(resource: self) index_adapter.delete(resource: self) Hyrax.publisher.publish('object.deleted', object: self, user: user) true end |
#destroy!(**opts) ⇒ Object
100 101 102 |
# File 'app/models/concerns/hyrax/ar_resource.rb', line 100 def destroy!(**opts) raise Valkyrie::Persistence::ObjectNotFoundError unless destroy(**opts) end |
#parent(query_service: Hyrax.query_service) ⇒ NilClass, Valkyrie::Resource
47 48 49 |
# File 'app/models/concerns/hyrax/ar_resource.rb', line 47 def parent(query_service: Hyrax.query_service) query_service.find_parents(resource: self).first end |
#save(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) ⇒ Valkyrie::Resource Also known as: create, update
This will persist the object to the repository. Not a complete transaction set up, but will index and notify listeners of metadata update
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/models/concerns/hyrax/ar_resource.rb', line 59 def save(persister: Hyrax.persister, index_adapter: Hyrax.index_adapter, user: ::User.system_user) is_new = new_record result = persister.save(resource: self) return nil unless result.persisted? index_adapter.save(resource: result) if result.collection? Hyrax.publisher.publish('collection.metadata.updated', collection: result, user: user) else Hyrax.publisher.publish('object.deposited', object: result, user: user) if is_new Hyrax.publisher.publish('object.metadata.updated', object: result, user: user) end # TODO: do we need to replace the properties here? self.new_record = false self.id = result.id result end |
#save!(**opts) ⇒ Object Also known as: create!, update!
79 80 81 |
# File 'app/models/concerns/hyrax/ar_resource.rb', line 79 def save!(**opts) raise Valkyrie::Persistence::ObjectNotFoundError unless save(**opts) end |