为多个附件重新构建元数据

时间:2016-08-19 15:49:13

标签: ruby-on-rails file-upload nested-attributes ruby-on-rails-5 refile

使用refile gem,我想保存多个上传的文件名。我在github here上打开了一个问题,但也希望与SO联系。它实际上也注明了here on SO

在自述文件之后,我已经应用了正确的strong_params,我可以看到它们在日志中被允许,但是不写入db。

:story accepts_attachments_for :documents,我为Documents课程设置了正确的元数据。

当我提交时,没有任何内容被拒绝 - 我可以在日志中看到params被接受,但元数据(文件名等)未保存。

我从哪里开始?

来源:

class Attachment < ApplicationRecord
  attachment :file
end

class Problem < ApplicationRecord
  has_many :attachments, dependent: :destroy
  accepts_attachments_for :attachments, append: true, attachment: :file
end

和控制器参数:

def mp_problem_params
  params.require(:problem).permit(:title, attachments_files: [])
end

My Attachment.rb专栏:

=> ["id",
 "attachment_filename",
 "knowledge_id",
 "attachment_size",
 "content_type",
 "created_at",
 "updated_at",
 "file_id"]

1 个答案:

答案 0 :(得分:1)

根据refile documentation,元数据存储在您已设置为attachment的对象/模型中。在您的情况下,Attachment模型。它还希望存在某些列以存储元数据。基于您的attachment模型:

class Attachment < ApplicationRecord
  attachment :file
end

然后,您必须在attachments表格中显示以下列:

file_filename
file_size
file_content_type

如果将这些列添加到attachments表中,则会存储该文件的元数据。