Class: ActiveStorage::Attached::One
- Inherits:
-
ActiveStorage::Attached
- Object
- ActiveStorage::Attached
- ActiveStorage::Attached::One
- Defined in:
- lib/active_storage/attached/one.rb
Overview
Representation of a single attachment to a model.
Instance Attribute Summary
Attributes inherited from ActiveStorage::Attached
Instance Method Summary collapse
-
#attach(attachable) ⇒ Object
Associates a given attachment with the current record, saving it to the database.
-
#attached? ⇒ Boolean
Returns
true
if an attachment has been made. -
#attachment ⇒ Object
Returns the associated attachment record.
-
#detach ⇒ Object
Deletes the attachment without purging it, leaving its blob in place.
-
#purge ⇒ Object
Directly purges the attachment (i.e. destroys the blob and attachment and deletes the file on the service).
-
#purge_later ⇒ Object
Purges the attachment through the queuing system.
Methods inherited from ActiveStorage::Attached
Constructor Details
This class inherits a constructor from ActiveStorage::Attached
Instance Method Details
#attach(attachable) ⇒ Object
Associates a given attachment with the current record, saving it to the database.
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
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/active_storage/attached/one.rb', line 22 def attach(attachable) blob_was = blob if attached? blob = create_blob_from(attachable) unless blob == blob_was transaction do detach (blob: blob) end blob_was.purge_later if blob_was && dependent == :purge_later end end |
#attached? ⇒ Boolean
Returns true
if an attachment has been made.
class User < ActiveRecord::Base
has_one_attached :avatar
end
User.new.avatar.attached? # => false
43 44 45 |
# File 'lib/active_storage/attached/one.rb', line 43 def attached? .present? end |
#attachment ⇒ Object
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.
12 13 14 |
# File 'lib/active_storage/attached/one.rb', line 12 def record.public_send("#{name}_attachment") end |
#detach ⇒ Object
Deletes the attachment without purging it, leaving its blob in place.
48 49 50 51 52 53 |
# File 'lib/active_storage/attached/one.rb', line 48 def detach if attached? .destroy nil end end |
#purge ⇒ Object
Directly purges the attachment (i.e. destroys the blob and attachment and deletes the file on the service).
57 58 59 60 61 62 |
# File 'lib/active_storage/attached/one.rb', line 57 def purge if attached? .purge nil end end |
#purge_later ⇒ Object
Purges the attachment through the queuing system.
65 66 67 68 69 |
# File 'lib/active_storage/attached/one.rb', line 65 def purge_later if attached? .purge_later end end |