活动存储(Rails 6)中ActiveStorage :: Attached :: One#attach出现IOError(已关闭流)

4

我正在尝试使用新的Rails 6文件下载语法来复制一个附加的文件。

if original.attachment.attached?
  original.attachment.open do |tempfile|
    clone.attachment.attach({
      io: tempfile,
      filename: original.attachment.blob.filename,
      content_type: original.attachment.blob.content_type
    })
  end
end

我遇到了这个错误:IOError (closed stream)

在执行过程中,如果我检查/tmp/文件夹,临时文件的副本是存在的。我不知道为什么会出现这个错误。

我正在运行Rails 6.0.0和ruby 2.6.5p114,操作系统是macOS 10.13 High Sierra。

1个回答

9

好的,我找到了答案。在Rails 6中,当附加文件时,您需要再次打开临时文件,如下所示:

io: File.open(tempfile.path),

希望这能帮助遇到相同问题的任何人。


1
谢谢!在升级到Rails 6之后,我真的很困惑为什么这个不起作用。 - SupaIrish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接