在Ruby中打开回形针附件的标准/正确方法是什么?

时间:2012-10-03 00:05:56

标签: ruby-on-rails paperclip

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_adapters,但我已经阅读了代码(以及相当多的StackOverflow问题)并且我仍然感到难过。

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

1 个答案:

答案 0 :(得分:4)

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

require 'open-uri'

file = open(yourmodel.file.url)