# Representation of multiple attachments to a model. class ActiveStorage::Attached::Many < ActiveStorage::Attached delegate_missing_to :attachments # Returns all the associated attachment records. # # You don't have to call this method to access the attachments' methods as # they are all available at the model level. def attachments record.public_send("#{name}_attachments") end # Associates one or several attachments with the current record, saving # them to the database. def attach(*attachables) attachables.flatten.collect do |attachable| attachments.create!(name: name, blob: create_blob_from(attachable)) end end # Checks the presence of attachments. # # class Gallery < ActiveRecord::Base # has_many_attached :photos # end # # Gallery.new.photos.attached? # => false def attached? attachments.any? end # Directly purges each associated attachment (i.e. destroys the blobs and # attachments and deletes the files on the service). def purge if attached? attachments.each(&:purge) attachments.reload end end # Purges each associated attachment through the queuing system. def purge_later if attached? attachments.each(&:purge_later) end end end