Skip to Content Skip to Search

Active Storage Attached Many

Decorated proxy object representing of multiple attachments to a model.

Methods
A
B
D
P

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 ]) 
# 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

attached?()

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 66 def attached? attachments.any? 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.

# File activestorage/lib/active_storage/attached/many.rb, line 32 def attachments change.present? ? change.attachments : record.public_send("#{name}_attachments") end

blobs()

Returns all attached blobs.

# File activestorage/lib/active_storage/attached/many.rb, line 37 def blobs change.present? ? change.blobs : record.public_send("#{name}_blobs") end

detach

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

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

Purges each associated attachment through the queuing system.

# File activestorage/lib/active_storage/attached/many.rb, line 19 delegate :purge_later, to: :purge_many