class ActiveStorage::Attached::Many

Decorated proxy object representing of multiple attachments to a model.

Public Instance Methods

attach(*attachables) click to toggle source

Associates one or several attachments with the current record, saving them to the database. Examples:

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("~/racecar.jpg"), filename: "racecar.jpg", content_type: "image/jpg")
document.images.attach([ first_blob, second_blob ])
# File activestorage/lib/active_storage/attached/many.rb, line 22
def attach(*attachables)
  attachables.flatten.collect do |attachable|
    attachments.create!(name: name, blob: create_blob_from(attachable))
  end
end
attached?() click to toggle source

Returns true if any attachments has been made.

class Gallery < ActiveRecord::Base
  has_many_attached :photos
end

Gallery.new.photos.attached? # => false
# File activestorage/lib/active_storage/attached/many.rb, line 35
def attached?
  attachments.any?
end
attachments() click to toggle source

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 11
def attachments
  record.public_send("#{name}_attachments")
end
purge() click to toggle source

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 41
def purge
  if attached?
    attachments.each(&:purge)
    attachments.reload
  end
end
purge_later() click to toggle source

Purges each associated attachment through the queuing system.

# File activestorage/lib/active_storage/attached/many.rb, line 49
def purge_later
  if attached?
    attachments.each(&:purge_later)
  end
end