Class: ActiveShrine::Attached::Many
- Defined in:
- lib/active_shrine/attached/many.rb
Overview
ActiveShrineAttachedMany
Decorated proxy object representing of multiple attachments to a model.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#attach(*attachables) ⇒ Object
Attaches one or more
attachables
to the record. -
#attached? ⇒ Boolean
Returns true if any attachments have been made.
-
#attachments ⇒ Object
Returns all the associated attachment records.
-
#detach ⇒ Object
:method: detach.
-
#purge ⇒ Object
:method: purge.
-
#purge_later ⇒ Object
:method: purge_later.
Methods inherited from Base
Constructor Details
This class inherits a constructor from ActiveShrine::Attached::Base
Instance Method Details
#attach(*attachables) ⇒ Object
Attaches one or more attachables
to the record.
If the record is persisted and unchanged, the attachments are saved to the database immediately. Otherwise, they’ll be saved to the DB when the record is next saved.
document.images.attach(params[:images]) # Array of ActionDispatch::Http::UploadedFile objects
person.avatar.attach(params[:signed_id]) # Signed reference to attachment
See https://shrinerb.com/docs/attacher#attaching for more
47 48 49 50 51 52 53 54 |
# File 'lib/active_shrine/attached/many.rb', line 47 def attach(*attachables) record.public_send(:"#{name}=", .map(&:signed_id) + attachables.flatten) if record.persisted? && !record.changed? return if !record.save end record.public_send(:"#{name}") end |
#attached? ⇒ Boolean
Returns true if any attachments have been made.
class Gallery < ApplicationRecord
has_many_attached :photos
end
Gallery.new.photos.attached? # => false
63 64 65 |
# File 'lib/active_shrine/attached/many.rb', line 63 def attached? .any? end |
#attachments ⇒ Object
Returns all the associated attachment records.
All methods called on this proxy object that aren’t listed here will automatically be delegated to attachments
.
33 34 35 |
# File 'lib/active_shrine/attached/many.rb', line 33 def change.present? ? change. : record.public_send(:"#{name}_attachments") end |
#detach ⇒ Object
:method: detach
Deletes associated attachments without purging them, leaving their respective blobs in place.
26 |
# File 'lib/active_shrine/attached/many.rb', line 26 delegate :detach, to: :detach_many |
#purge ⇒ Object
:method: purge
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
14 |
# File 'lib/active_shrine/attached/many.rb', line 14 delegate :purge, to: :purge_many |
#purge_later ⇒ Object
:method: purge_later
Purges each associated attachment through the queuing system.
20 |
# File 'lib/active_shrine/attached/many.rb', line 20 delegate :purge_later, to: :purge_many |