class ActiveStorage::Attachment
Прикрепление 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
Публичные методы класса
# 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
Публичные методы экземпляра
# File activestorage/app/models/active_storage/attachment.rb, line 33 belongs_to :blob, class_name: "ActiveStorage::Blob", autosave: true
Возвращает связанный ActiveStorage::Blob.
# 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, что представляет собой неизвестный предварительно определенный вариант прикрепления.
# File activestorage/app/models/active_storage/attachment.rb, line 50
def purge
transaction do
delete
record.touch if record&.persisted?
end
blob&.purge
end Синхронно удаляет прикрепление и удаляет блок.
# 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 Удаляет прикрепление и вставляет в очередь задачу фонового выполнения для удаления блока.
# File activestorage/app/models/active_storage/attachment.rb, line 27 belongs_to :record, polymorphic: true, touch: true
Возвращает связанную запись.
# 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, что представляет собой неизвестный предварительно определенный вариант прикрепления.
# 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.