Class: ActiveStorage::Attached::Many
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Attached
|
|
|
Instance Chain:
self,
Attached
|
|
| Inherits: |
Attached
|
| Defined in: | activestorage/lib/active_storage/attached/many.rb |
Overview
Decorated proxy object representing of multiple attachments to a model.
Instance Attribute Summary
-
#attached? ⇒ Boolean
readonly
Returns true if any attachments have been made.
-
#detach
readonly
Deletes associated attachments without purging them, leaving their respective blobs in place.
-
#purge
readonly
Directly purges each associated attachment (i.e.
-
#purge_later
readonly
Purges each associated attachment through the queuing system.
Instance Method Summary
- #as_json(options = nil)
-
#attach(*attachables)
Attaches one or more
attachablesto the record. -
#attach!(*attachables)
Calls attach, and raises an exception if the record was meant to be saved but at least one of the validations failed.
-
#attachments
Returns all the associated attachment records.
-
#blobs
Returns all attached blobs.
-
#byte_size
Returns the combined size in bytes of all attached blobs.
- #detach_many private
- #purge_many private
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 76
def attached? .any? end
#detach (readonly)
Deletes associated attachments without purging them, leaving their respective blobs in place.
# File 'activestorage/lib/active_storage/attached/many.rb', line 25
delegate :detach, to: :detach_many
#purge (readonly)
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 13
delegate :purge, to: :purge_many
#purge_later (readonly)
Purges each associated attachment through the queuing system.
# File 'activestorage/lib/active_storage/attached/many.rb', line 19
delegate :purge_later, to: :purge_many
Instance Method Details
#as_json(options = nil)
[ GitHub ]# File 'activestorage/lib/active_storage/attached/many.rb', line 87
def as_json( = nil) .as_json() end
#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/jpeg")
document.images.attach([ first_blob, second_blob ])
#attach!(*attachables)
Calls attach, and raises an exception if the record was meant to be saved but at least one of the validations failed.
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/jpeg")
document.images.attach!([ first_blob, second_blob ])
# File 'activestorage/lib/active_storage/attached/many.rb', line 65
def attach!(*attachables) attach(*attachables) || raise(ActiveRecord::RecordNotSaved.new("Failed to save the record", record)) 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.
#byte_size
Returns the combined size in bytes of all attached blobs.
document.images.byte_size # => 2048
# File 'activestorage/lib/active_storage/attached/many.rb', line 83
def byte_size blobs.pluck(:byte_size).sum end