Representation of a single attachment to a model.
Methods
Instance Public methods
attach(attachable)
Attaches an attachable
to the record.
If the record is persisted and unchanged, the attachment is saved to the database immediately. Otherwise, it'll be saved to the DB when the record is next saved.
person.avatar.attach(params[:avatar]) # ActionDispatch::Http::UploadedFile object
person.avatar.attach(params[:signed_blob_id]) # Signed reference to blob from direct upload
person.avatar.attach(io: File.open("/path/to/face.jpg"), filename: "face.jpg", content_type: "image/jpg")
person.avatar.attach(avatar_blob) # ActiveStorage::Blob object
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 30
def attach(attachable)
if record.persisted? && !record.changed?
record.public_send("#{name}=", attachable)
record.save
else
record.public_send("#{name}=", attachable)
end
end
🔎 See on GitHub
attached?()
Returns true
if an attachment has been made.
class User < ApplicationRecord
has_one_attached :avatar
end
User.new.avatar.attached? # => false
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 46
def attached?
attachment.present?
end
🔎 See on GitHub
attachment()
Returns the associated attachment record.
You don't have to call this method to access the attachment's methods as they are all available at the model level.
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 12
def attachment
change.present? ? change.attachment : record.public_send("#{name}_attachment")
end
🔎 See on GitHub
blank?()
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 16
def blank?
!attached?
end
🔎 See on GitHub
detach()
Deletes the attachment without purging it, leaving its blob in place.
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 51
def detach
if attached?
attachment.delete
write_attachment nil
end
end
🔎 See on GitHub
purge()
Directly purges the attachment (i.e. destroys the blob and attachment and deletes the file on the service).
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 60
def purge
if attached?
attachment.purge
write_attachment nil
end
end
🔎 See on GitHub
purge_later()
Purges the attachment through the queuing system.
📝 Source code
# File activestorage/lib/active_storage/attached/one.rb, line 68
def purge_later
if attached?
attachment.purge_later
write_attachment nil
end
end
🔎 See on GitHub