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 
    
    
  
  
  
  
  
  
  
  
  
    Attaches one or more attachablesto the record.
- 
  
    
      #attached?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Returns true if any attachments have been made. 
- 
  
    
      #attachments  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Returns all the associated attachment records. 
- 
  
    
      #blobs  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Returns all attached blobs. 
- 
  
    
      #detach  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Deletes associated attachments without purging them, leaving their respective blobs in place. 
Methods inherited from ActiveStorage::Attached
Constructor Details
This class inherits a constructor from ActiveStorage::Attached
Instance Method Details
#attach(*attachables) ⇒ Object
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 ])
| 30 31 32 33 34 35 36 37 | # File 'lib/active_storage/attached/many.rb', line 30 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 | 
#attached? ⇒ Boolean
Returns true if any attachments have been made.
class Gallery < ApplicationRecord
  has_many_attached :photos
end
Gallery.new.photos.attached? # => false
| 46 47 48 | # File 'lib/active_storage/attached/many.rb', line 46 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.
| 11 12 13 | # File 'lib/active_storage/attached/many.rb', line 11 def change.present? ? change. : record.public_send("#{name}_attachments") end | 
#blobs ⇒ Object
Returns all attached blobs.
| 16 17 18 | # File 'lib/active_storage/attached/many.rb', line 16 def blobs change.present? ? change.blobs : record.public_send("#{name}_blobs") end | 
#detach ⇒ Object
Deletes associated attachments without purging them, leaving their respective blobs in place.
| 51 52 53 | # File 'lib/active_storage/attached/many.rb', line 51 def detach .delete_all if attached? end |