W3cubDocs

/Ruby on Rails 7.0

class ActiveStorage::Attached::Many

Parent:
ActiveStorage::Attached

Decorated proxy object representing of multiple attachments to a model.

Public Instance Methods

attach(*attachables) Show source
# File activestorage/lib/active_storage/attached/many.rb, line 49
def attach(*attachables)
  if record.persisted? && !record.changed?
    record.public_send("#{name}=", blobs + attachables.flatten)
    record.save
  else
    record.public_send("#{name}=", (change&.attachables || blobs) + attachables.flatten)
  end
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 ])
attached?() Show source
# File activestorage/lib/active_storage/attached/many.rb, line 65
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
attachments() Show source
# File activestorage/lib/active_storage/attached/many.rb, line 30
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.

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

Returns all attached blobs.

detach() Show source
# File activestorage/lib/active_storage/attached/many.rb, line 23
delegate :detach, to: :detach_many

Deletes associated attachments without purging them, leaving their respective blobs in place.

purge() Show source
# File activestorage/lib/active_storage/attached/many.rb, line 11
delegate :purge, to: :purge_many

Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).

purge_later() Show source
# File activestorage/lib/active_storage/attached/many.rb, line 17
delegate :purge_later, to: :purge_many

Purges each associated attachment through the queuing system.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.