【发布时间】:2018-10-02 10:10:34
【问题描述】:
我有一个带有一个使用 ActiveStorage 的附件的模型:
class ProofreadDocument < ApplicationRecord
has_one_attached :file
end
我正在执行一项将文件附加到校对文档的 rake 任务。 这些文件被压缩成一个 zip 存档。
我知道我可以通过阅读 ActiveStorage 文档来附加以下文件:
@proofread_document.file.attach(io: File.open('/path/to/file'), filename: 'file.pdf')
我的 rake 任务中有以下内容:
Zip::File.open(args.path_to_directory) do |zipfile|
zipfile.each do |file|
proofread_document = ProofreadDocument.new()
proofread_document.file.attach(io: file.get_input_stream.read, filename: file.name)
proofread_document.save
end
end
这会产生以下错误:
NoMethodError: undefined method `read' for #<String:0x007f8d894d95e0>
我需要一次读取每个文件的内容,以将它们附加到 proofread_document 实例。我该怎么做?
【问题讨论】:
-
您需要对压缩文件进行任何处理吗?如果不是,为什么您不能在第一步中直接附加它,而不用担心任何 rake 任务?
-
我不想附加 zip 文件。我想将 zip 中的每个文件附加到 ProofreadDocument 的不同实例。
-
您是否尝试从
file.get_input_stream.read中删除read? -
是的,我得到一个不同的错误。
标签: ruby ruby-on-rails-5 rubyzip