Active Storage Attached Many
Decorated proxy object representing of multiple attachments to a model.
Methods
Instance Public methods
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 ])
π Source code
# File activestorage/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
π See on GitHub
attached?()
Returns true if any attachments have been made.
class Gallery < ApplicationRecord
has_many_attached :photos
end
Gallery.new.photos.attached? # => false
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 66
def attached?
attachments.any?
end
π See on GitHub
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
.
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 32
def attachments
change.present? ? change.attachments : record.public_send("#{name}_attachments")
end
π See on GitHub
blobs()
Returns all attached blobs.
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 37
def blobs
change.present? ? change.blobs : record.public_send("#{name}_blobs")
end
π See on GitHub
detach
Deletes associated attachments without purging them, leaving their respective blobs in place.
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 25
delegate :detach, to: :detach_many
π See on GitHub
purge
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 13
delegate :purge, to: :purge_many
π See on GitHub
purge_later
Purges each associated attachment through the queuing system.
π Source code
# File activestorage/lib/active_storage/attached/many.rb, line 19
delegate :purge_later, to: :purge_many
π See on GitHub