Active Storage 附件
附件将记录与 Blob 关联起来。通常这是 一对多 的记录-Blob 关系,但可以将多个不同的记录与同一个 Blob 关联起来。附件表上的外键约束防止 Blob 在它们仍然附加到任何记录时被清除。
附件还可以访问来自 ActiveStorage::Blob
的所有方法。
如果您希望预加载附件或 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
- B
- P
- R
- V
- W
类公共方法
with_all_variant_records 链接
一次性急切加载附件上的所有变体记录。
User.first.avatars.with_all_variant_records
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 45 scope :with_all_variant_records, -> { includes(blob: { variant_records: { image_attachment: :blob }, preview_image_attachment: { blob: { variant_records: { image_attachment: :blob } } }
实例公共方法
blob 链接
返回关联的 ActiveStorage::Blob
.
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 31 belongs_to :blob, class_name: "ActiveStorage::Blob", autosave: true, inverse_of: :attachments
preview(transformations) 链接
返回一个 ActiveStorage::Preview
实例,用于具有提供的 transformations
集合的附件。例如
video.preview(resize_to_limit: [100, 100]).processed.url
或者如果您使用预定义变体
video.preview(:thumb).processed.url
参见 ActiveStorage::Blob::Representable#preview
以获取更多信息。
如果 transformations
是一个 Symbol
,它是一个附件的未知预定义变体,则会引发 ArgumentError
。
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 101 def preview(transformations) transformations = transformations_by_name(transformations) blob.preview(transformations) end
purge() 链接
同步删除附件并 清除 Blob.
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 51 def purge transaction do delete record.touch if record&.persisted? end blob&.purge end
purge_later() 链接
删除附件并 将一个后台作业排队 以清除 Blob。
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 60 def purge_later transaction do delete record.touch if record&.persisted? end blob&.purge_later end
record 链接
返回关联的记录。
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 25 belongs_to :record, polymorphic: true, touch: ActiveStorage.touch_attachment_records
representation(transformations) 链接
返回一个 ActiveStorage::Preview
或一个 ActiveStorage::Variant
实例,用于具有提供的 transformations
集合的附件。例如
avatar.representation(resize_to_limit: [100, 100]).processed.url
或者如果您使用预定义变体
avatar.representation(:thumb).processed.url
参见 ActiveStorage::Blob::Representable#representation
以获取更多信息。
如果 transformations
是一个 Symbol
,它是一个附件的未知预定义变体,则会引发 ArgumentError
。
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 120 def representation(transformations) transformations = transformations_by_name(transformations) blob.representation(transformations) end
variant(transformations) 链接
返回一个 ActiveStorage::Variant
或 ActiveStorage::VariantWithRecord
实例,用于具有提供的 transformations
集合的附件。例如
avatar.variant(resize_to_limit: [100, 100]).processed.url
或者如果您使用预定义变体
avatar.variant(:thumb).processed.url
参见 ActiveStorage::Blob::Representable#variant
以获取更多信息。
如果 transformations
是一个 Symbol
,它是一个附件的未知预定义变体,则会引发 ArgumentError
。
来源: 显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/attachment.rb, line 82 def variant(transformations) transformations = transformations_by_name(transformations) blob.variant(transformations) end