Decorated proxy object representing of multiple attachments to a model.
# File activestorage/lib/active_storage/attached/many.rb, line 30 def attach(*attachables) if record.persisted? && !record.changed? record.update(name => blobs + attachables.flatten) 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/jpg") document.images.attach([ first_blob, second_blob ])
# File activestorage/lib/active_storage/attached/many.rb, line 45 def attached? attachments.any? end
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 11 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
.
# File activestorage/lib/active_storage/attached/many.rb, line 16 def blobs change.present? ? change.blobs : record.public_send("#{name}_blobs") end
Returns all attached blobs.
# File activestorage/lib/active_storage/attached/many.rb, line 50 def detach attachments.delete_all if attached? end
Deletes associated attachments without purging them, leaving their respective blobs in place.
# File activestorage/lib/active_storage/attached/many.rb, line 60
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 64
Purges each associated attachment through the queuing system.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.