Class: ActiveStorage::Attached::Many
- Inherits:
-
ActiveStorage::Attached
- Object
- ActiveStorage::Attached
- ActiveStorage::Attached::Many
- Defined in:
- lib/active_storage/attached/many.rb
Overview
Decorated proxy object representing of multiple attachments to a model.
Instance Attribute Summary
Attributes inherited from ActiveStorage::Attached
Instance Method Summary collapse
-
#attach(*attachables) ⇒ Object
Associates one or several attachments with the current record, saving them to the database.
-
#attached? ⇒ Boolean
Returns true if any attachments has been made.
-
#attachments ⇒ Object
Returns all the associated attachment records.
-
#purge ⇒ Object
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
-
#purge_later ⇒ Object
Purges each associated attachment through the queuing system.
Methods inherited from ActiveStorage::Attached
Constructor Details
This class inherits a constructor from ActiveStorage::Attached
Instance Method Details
#attach(*attachables) ⇒ Object
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 ])
19 20 21 22 23 |
# File 'lib/active_storage/attached/many.rb', line 19 def attach(*attachables) attachables.flatten.collect do |attachable| .create!(name: name, blob: create_blob_from(attachable)) end end |
#attached? ⇒ Boolean
Returns true if any attachments has been made.
class Gallery < ActiveRecord::Base
has_many_attached :photos
end
Gallery.new.photos.attached? # => false
32 33 34 |
# File 'lib/active_storage/attached/many.rb', line 32 def attached? .any? end |
#attachments ⇒ Object
Returns all the associated attachment records.
All methods called on this proxy object that aren’t listed here will automatically be delegated to ‘attachments`.
8 9 10 |
# File 'lib/active_storage/attached/many.rb', line 8 def record.public_send("#{name}_attachments") end |
#purge ⇒ Object
Directly purges each associated attachment (i.e. destroys the blobs and attachments and deletes the files on the service).
38 39 40 41 42 43 |
# File 'lib/active_storage/attached/many.rb', line 38 def purge if attached? .each(&:purge) .reload end end |
#purge_later ⇒ Object
Purges each associated attachment through the queuing system.
46 47 48 49 50 |
# File 'lib/active_storage/attached/many.rb', line 46 def purge_later if attached? .each(&:purge_later) end end |