7

Paperclip 提供了一个 .url 方法来获取附件的 URL 以包含在视图中。

我实际上需要从 Ruby 中将附件作为文件打开。

大约六个月前,Paperclip 的最新版本允许我们在附件对象上调用 to_file。尽管它没有记录,但它始终如一地工作。但在某些时候它停止了工作。

我希望能够从验证器中打开文件本身(在这种情况下,它尚未保存到其最终位置)或在保存 ActiveModel 对象后从完全其他方法打开文件(在这种情况下,文件已移动到其最终位置,可能在 Amazon S3 上)。

似乎选项是:

file = File.new(object.attachment.path)

...仅适用于本地文件,不适用于 S3 上的文件。或者:

file = object.attachment.queued_for_write[:original]

...仅在第一次保存之前有效(我认为)?

似乎应该有一种简单的方法来打开文件(在 Amazon S3 之类的情况下,可能涉及将其复制到临时位置),我猜答案与 io_adapter 有关,但我已经通读了代码(以及很多 StackOverflow 问题),但我仍然很难过。

是否有一种标准方法可以将回形针附件打开为适用于所有情况的文件?

4

1 回答 1

4

这将为您提供文件(假设您的模型附加了一个file

require 'open-uri'

file = open(yourmodel.file.url)
于 2012-10-03T01:24:52.830 回答