Class: ActiveStorage::Attached::Many
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
ActiveStorage::Attached
|
Defined in: | activestorage/lib/active_storage/attached/many.rb |
Overview
Decorated proxy object representing of multiple attachments to a model.
Class Method Summary
::ActiveStorage::Attached
- Inherited
Instance Attribute Summary
-
#attached? ⇒ Boolean
readonly
Returns true if any attachments have been made.
::ActiveStorage::Attached
- Inherited
Instance Method Summary
-
#attach(*attachables)
Attaches one or more
attachables
to the record. -
#attachments
Returns all the associated attachment records.
-
#blobs
Returns all attached blobs.
-
#detach
Deletes associated attachments without purging them, leaving their respective blobs in place.
-
#purge
Directly purges each associated attachment (i.e.
-
#purge_later
Purges each associated attachment through the queuing system.
Constructor Details
This class inherits a constructor from ActiveStorage::Attached
Instance Attribute Details
#attached? ⇒ Boolean
(readonly)
Returns true if any attachments have been made.
class Gallery < ApplicationRecord
has_many_attached :photos
end
Gallery.new.photos.attached? # => false
# File 'activestorage/lib/active_storage/attached/many.rb', line 46
def attached? .any? end
Instance Method Details
#attach(*attachables)
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
document.images.attach(params[:signed_blob_id]) # Signed reference to blob from direct upload
document.images.attach(io: File.open("/path/to/racecar.jpg"), filename: "racecar.jpg", content_type: "image/jpg")
document.images.attach([ first_blob, second_blob ])
# File 'activestorage/lib/active_storage/attached/many.rb', line 30
def attach(*attachables) if record.persisted? && !record.changed? record.public_send("#{name}=", blobs + attachables.flatten) record.save else record.public_send("#{name}=", (change&.attachables || blobs) + attachables.flatten) end end
#attachments
Returns all the associated attachment records.
All methods called on this proxy object that aren’t listed here will automatically be delegated to attachments
.
#blobs
Returns all attached blobs.
#detach
Deletes associated attachments without purging them, leaving their respective blobs in place.
# File 'activestorage/lib/active_storage/attached/many.rb', line 51
def detach .delete_all if attached? end
#purge
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
# File 'activestorage/lib/active_storage/attached/many.rb', line 56
rdoc_method :method: purge
#purge_later
Purges each associated attachment through the queuing system.
# File 'activestorage/lib/active_storage/attached/many.rb', line 62
rdoc_method :method: purge_later