Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveStorage::Attachment

Родитель:
ActiveStorage::Record

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

Прикрепления также имеют доступ ко всем методам из 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

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

purge() Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 33
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 42
def purge_later
  transaction do
    delete
    record.touch if record&.persisted?
  end
  blob&.purge_later
end

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

variant(transformations) Показать исходный код
# File activestorage/app/models/active_storage/attachment.rb, line 56
def variant(transformations)
  case transformations
  when Symbol
    variant_name = transformations
    transformations = variants.fetch(variant_name) do
      record_model_name = record.to_model.model_name.name
      raise ArgumentError, "Cannot find variant :#{variant_name} for #{record_model_name}##{name}"
    end
  end

  blob.variant(transformations)
end

Возвращает экземпляр ActiveStorage::Variant или ActiveStorage::VariantWithRecord для прикрепления с заданным набором transformations. Более подробную информацию см. в ActiveStorage::Blob::Representable#variant.

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

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

Spec-Zone.ru

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