Decorated proxy object representing of multiple attachments to a model.
Methods
Instance Public methods
attach(*attachables)
Associates one or several attachments with the current record, saving them to the database.
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/jpg")
document.images.attach([ first_blob, second_blob ])
Source:
# File activestorage/lib/active_storage/attached/many.rb, line 21
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
attached?()
Returns true if any attachments has been made.
class Gallery < ActiveRecord::Base
has_many_attached :photos
end
Gallery.new.photos.attached? # => false
Source:
# File activestorage/lib/active_storage/attached/many.rb, line 38
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.
Source:
# File activestorage/lib/active_storage/attached/many.rb, line 11
def attachments
record.public_send("#{name}_attachments")
end
detach()
Deletes associated attachments without purging them, leaving their respective blobs in place.
Source:
# File activestorage/lib/active_storage/attached/many.rb, line 43
def detach
attachments.destroy_all if attached?
end