📅  最后修改于: 2023-12-03 15:19:41.617000             🧑  作者: Mango
Active Storage 是 Rails 5.2 中引入的一个库,用于管理和处理文件上传。它提供了一个简单的接口,用于上传、存储和处理附件。
本文将介绍如何使用 Active Storage 来获取所有附件的名称。
首先,你需要确保已经设置好了 Active Storage。这包括配置 storage 服务(例如本地磁盘、Amazon S3 等)以及生成附件表。
运行以下命令生成附件表:
rails active_storage:install
rails db:migrate
在你的模型中,你可以使用 has_one_attached
或 has_many_attached
方法来定义附件。
例如,假设我们有一个 User
模型,并且每个用户可以上传一个头像附件,可以这样定义:
class User < ApplicationRecord
has_one_attached :avatar
end
使用 has_many_attached
来定义一对多附件关系。
在视图中上传附件,你可以使用 Rails 提供的 file_field
或 file_field_tag
方法。
要获取所有附件的名称,我们可以使用 ActiveStorage::Attachment
类的 all
方法来查询所有附件对象。然后,我们可以通过 name
方法获取每个附件的名称。
下面是一个例子,展示如何获取所有用户的头像附件名称:
attachments = ActiveStorage::Attachment.all
avatar_names = attachments.select { |a| a.name == "avatar" }.map(&:filename)
# 如果有多个用户,你可以在循环中使用上述代码
以上代码会返回一个包含所有头像附件名称的数组。
通过使用 Active Storage,你可以方便地管理和处理文件上传。在本文中,我们介绍了如何使用 Active Storage 获取所有附件的名称。通过查询 ActiveStorage::Attachment
类并使用 name
方法,我们可以获取附件的名称。