class ActiveStorage::Attached::Many
Active Storage Attached Many¶ ↑
Decorated proxy object representing of multiple attachments to a model.
Public Instance Methods
Source
# File lib/active_storage/attached/many.rb, line 51 def attach(*attachables) record.public_send("#{name}=", blobs + attachables.flatten) if record.persisted? && !record.changed? return if !record.save end record.public_send("#{name}") end
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 ])
Source
# File lib/active_storage/attached/many.rb, line 66 def attached? attachments.any? end
Returns true if any attachments have been made.
class Gallery < ApplicationRecord has_many_attached :photos end Gallery.new.photos.attached? # => false
Source
# File lib/active_storage/attached/many.rb, line 32 def attachments change.present? ? change.attachments : record.public_send("#{name}_attachments") end
Returns all the associated attachment records.
All methods called on this proxy object that aren’t listed here will automatically be delegated to attachments
.
Source
# File lib/active_storage/attached/many.rb, line 37 def blobs change.present? ? change.blobs : record.public_send("#{name}_blobs") end
Returns all attached blobs.
Source
# File lib/active_storage/attached/many.rb, line 25 delegate :detach, to: :detach_many
Deletes associated attachments without purging them, leaving their respective blobs in place.
Source
# File lib/active_storage/attached/many.rb, line 13 delegate :purge, to: :purge_many
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
Source
# File lib/active_storage/attached/many.rb, line 19 delegate :purge_later, to: :purge_many
Purges each associated attachment through the queuing system.
Private Instance Methods
Source
# File lib/active_storage/attached/many.rb, line 75 def detach_many Attached::Changes::DetachMany.new(name, record, attachments) end
Source
# File lib/active_storage/attached/many.rb, line 71 def purge_many Attached::Changes::PurgeMany.new(name, record, attachments) end