Class: ActiveStorage::Attached::One
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Attached
|
|
|
Instance Chain:
self,
Attached
|
|
| Inherits: |
Attached
|
| Defined in: | activestorage/lib/active_storage/attached/one.rb |
Overview
Representation of a single attachment to a model.
Instance Attribute Summary
-
#attached? ⇒ Boolean
readonly
Returns
trueif an attachment has been made. -
#blank? ⇒ Boolean
readonly
Returns
trueif an attachment is not attached. -
#detach
readonly
Deletes the attachment without purging it, leaving its blob in place.
-
#purge
readonly
Directly purges the attachment (i.e.
-
#purge_later
readonly
Purges the attachment through the queuing system.
Instance Method Summary
-
#as_json(options = nil)
Returns the attachment record's JSON representation, or
nilwhen no attachment is present. -
#attach(attachable)
Attaches an
attachableto the record. -
#attach!(attachable)
Calls attach, and raises an exception if the record was meant to be saved but at least one of the validations failed.
-
#attachment
Returns the associated attachment record.
- #detach_one private
- #purge_one private
Instance Attribute Details
#attached? ⇒ Boolean (readonly)
Returns true if an attachment has been made.
class User < ApplicationRecord
has_one_attached :avatar
end
User.new.avatar.attached? # => false
# File 'activestorage/lib/active_storage/attached/one.rb', line 89
def attached? .present? end
#blank? ⇒ Boolean (readonly)
Returns true if an attachment is not attached.
class User < ApplicationRecord
has_one_attached :avatar
end
User.new.avatar.blank? # => true
# File 'activestorage/lib/active_storage/attached/one.rb', line 44
def blank? !attached? end
#detach (readonly)
Deletes the attachment without purging it, leaving its blob in place.
# File 'activestorage/lib/active_storage/attached/one.rb', line 25
delegate :detach, to: :detach_one
#purge (readonly)
Directly purges the attachment (i.e. destroys the blob and attachment and deletes the file on the service).
# File 'activestorage/lib/active_storage/attached/one.rb', line 13
delegate :purge, to: :purge_one
#purge_later (readonly)
Purges the attachment through the queuing system.
# File 'activestorage/lib/active_storage/attached/one.rb', line 19
delegate :purge_later, to: :purge_one
Instance Method Details
#as_json(options = nil)
Returns the attachment record's JSON representation, or nil when no
attachment is present.
# File 'activestorage/lib/active_storage/attached/one.rb', line 50
def as_json( = nil) attached? ? .as_json() : nil end
#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/jpeg")
person.avatar.attach(avatar_blob) # ActiveStorage::Blob object
#attach!(attachable)
Calls attach, and raises an exception if the record was meant to be saved but at least one of the validations failed.
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/jpeg")
person.avatar.attach!(avatar_blob) # ActiveStorage::Blob object
# File 'activestorage/lib/active_storage/attached/one.rb', line 78
def attach!(attachable) attach(attachable) || raise(ActiveRecord::RecordNotSaved.new("Failed to save the record", record)) end
#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.