class ActiveStorage::Attached::Many

Decorated proxy object representing of multiple attachments to a model.

def attach(*attachables)

document.images.attach([ first_blob, second_blob ])
document.images.attach(io: File.open("/path/to/racecar.jpg"), filename: "racecar.jpg", content_type: "image/jpg")
document.images.attach(params[:signed_blob_id]) # Signed reference to blob from direct upload
document.images.attach(params[:images]) # Array of ActionDispatch::Http::UploadedFile objects

Associates one or several attachments with the current record, saving them to the database.
def attach(*attachables)
  attachables.flatten.collect do |attachable|
    if record.new_record?
      attachments.build(record: record, blob: create_blob_from(attachable))
    else
      attachments.create!(record: record, blob: create_blob_from(attachable))
    end
  end
end

def attached?

Gallery.new.photos.attached? # => false

end
has_many_attached :photos
class Gallery < ActiveRecord::Base

Returns true if any attachments has been made.
def attached?
  attachments.any?
end

def attachments

All methods called on this proxy object that aren't listed here will automatically be delegated to +attachments+.

Returns all the associated attachment records.
def attachments
  record.public_send("#{name}_attachments")
end

def detach

Deletes associated attachments without purging them, leaving their respective blobs in place.
def detach
  attachments.destroy_all if attached?
end