Spec-Zone.ru › Ruby on Rails 7.1

class ActiveStorage::Attachment

Parent:
ActiveStorage::Record

Прикрепление Active Storage

Прикрепления связывают записи с блобами. Обычно это отношение «одна запись — много блобов», но можно связать несколько разных записей с одним и тем же блобом. Ограничение внешнего ключа в таблице прикреплений предотвращает удаление блобов, если они все еще прикреплены к каким-либо записям.

Прикрепления также имеют доступ ко всем методам из ActiveStorage::Blob.

Если вы хотите предварительно загрузить прикрепления или блоки, вы можете использовать эти области видимости:

# preloads attachments, their corresponding blobs, and variant records (if using `ActiveStorage.track_variants`)
User.all.with_attached_avatars

# preloads blobs and variant records (if using `ActiveStorage.track_variants`)
User.first.avatars.with_all_variant_records

Публичные методы класса

with_all_variant_records() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 47
scope :with_all_variant_records, -> { includes(blob: { variant_records: { image_attachment: :blob } }) }

Загрузка всех записей вариантов прикрепления сразу.

User.first.avatars.with_all_variant_records

Публичные методы экземпляра

blob() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 33
belongs_to :blob, class_name: "ActiveStorage::Blob", autosave: true

Возвращает связанный ActiveStorage::Blob.

preview(transformations) Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 100
def preview(transformations)
  transformations = transformations_by_name(transformations)
  blob.preview(transformations)
end

Возвращает экземпляр ActiveStorage::Preview для прикрепления с набором transformations. Пример:

video.preview(resize_to_limit: [100, 100]).processed.url

или, если вы используете предварительно определенные варианты:

video.preview(:thumb).processed.url

См. ActiveStorage::Blob::Representable#preview для получения дополнительной информации.

Вызывает ArgumentError , если transformations является Symbol, что представляет собой неизвестный предварительно определенный вариант прикрепления.

purge() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 50
def purge
  transaction do
    delete
    record.touch if record&.persisted?
  end
  blob&.purge
end

Синхронно удаляет прикрепление и удаляет блок.

purge_later() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 59
def purge_later
  transaction do
    delete
    record.touch if record&.persisted?
  end
  blob&.purge_later
end

Удаляет прикрепление и вставляет в очередь задачу фонового выполнения для удаления блока.

record() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 27
belongs_to :record, polymorphic: true, touch: true

Возвращает связанную запись.

representation(transformations) Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 119
def representation(transformations)
  transformations = transformations_by_name(transformations)
  blob.representation(transformations)
end

Возвращает ActiveStorage::Preview или ActiveStorage::Variant для прикрепления с заданным набором transformations. Пример:

avatar.representation(resize_to_limit: [100, 100]).processed.url

или, если вы используете предварительно определенные варианты:

avatar.representation(:thumb).processed.url

См. ActiveStorage::Blob::Representable#representation для получения дополнительной информации.

Вызывает ArgumentError , если transformations является Symbol, что представляет собой неизвестный предварительно определенный вариант прикрепления.

variant(transformations) Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 81
def variant(transformations)
  transformations = transformations_by_name(transformations)
  blob.variant(transformations)
end

Возвращает экземпляр ActiveStorage::Variant или ActiveStorage::VariantWithRecord для прикрепления с набором transformations . Пример:

avatar.variant(resize_to_limit: [100, 100]).processed.url

или, если вы используете предварительно определенные варианты:

avatar.variant(:thumb).processed.url

См. ActiveStorage::Blob::Representable#variant для получения дополнительной информации.

Вызывает ArgumentError , если transformations является Symbol, что представляет собой неизвестный предварительно определенный вариант прикрепления.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API