首页 > 解决方案 > 活动存储 - 添加文件描述/文本 - Ruby on Rails 5.2

问题描述

随着 Rails 5.2 的发布,常用的Paperclip gem现已弃用,建议使用Rails 附带的Active Storage 。我正在开始一个新项目并轻松设置 Active Storage,但是在尝试向文件上传添加名称或描述时出现了问题。

使用 Paperclip,我会在模型中添加一个名为 file_upload_name 的列,这样除了文件名“something.pdf”外,我还可以在上传表单上添加名称或描述,例如“我的重要文档”。

对于我正在做的项目,这是上传过程的重要组成部分,理想情况下需要在上传时完成。由于 Active Record 不会以这种方式存储到模型中,因此它并不像在表单中添加列和添加字段那么简​​单。看起来应该相对简单,但我无法弄清楚或找到有关如何最好地做到这一点的任何信息。非常感谢任何帮助。

这是我要实现的目标的示例:

在此处输入图像描述

使用 Active Storage,最终结果是一个多文件上传按钮,没有命名等。

标签: ruby-on-railsruby-on-rails-5rails-activestorage

解决方案


您应该创建一个新模型来包装每个附加文件。然后,该模型将在其上定义 ActiveStorage 附件,以及您需要捕获的任何其他属性。前任:

class Attachment < ApplicationRecord
  has_one_attached :file
end

然后,Rails 将file每个附件的属性视为一种属性。您可以在附件模型上定义您的其他属性(例如upload_name 等)。根据您的屏幕截图,看起来报价可能包含许多附加文件,因此您可以执行以下操作:

class Quotation < ApplicationRecord
  has_many :attachments
end

推荐阅读