2013-05-01 71 views
0

我正在使用回形针与附件的窗体上工作。临时文件上传使用回形针

如果提交表单时模型无效,那么我想保存该文件的临时副本,以便用户在修复表单提交后不必重新上传文件。

我现在正在做的是使用常规的Ruby文件操作来保存文件..但与使用Paperclip相比,这是相当低的水平。

什么可以最好地保存临时Paperclip附件,然后允许我在成功验证后将临时文件移动到最终对象?

我在想一个简单的ActiveRecord对象(即,TempAttachment),我可以在其中分配上传的文件,然后在对象保存成功时将其移动到最终对象。

这有道理吗?任何人有任何想法?

+0

尽管如此,您仍然必须采取一些措施,因为您无法将文件本地存储在Rails应用或数据库中 - 您必须使用AWS S3等服务。 – 2013-05-01 12:32:17

+1

@AlexLynham:为什么不能将它存储在应用程序中(在/ public或自定义目录下)? – PinnyM 2013-05-01 14:02:57

+0

啊,其实我认为我的观点只适用于Heroku,因为他们处理你的应用程序的方式。 – 2013-05-01 14:19:33

回答

0

您当然可以按照您的建议来做到这一点。但是,当你保存一个临时附件对象来跟踪这个文件...为什么不让你的生活更容易一些,只需保存标记为“不完整”的模​​型?

您可以设置一个不完整的模型来绕过许多验证,同时阻止不应该使用它们的区域的不完整模型。

但是,保证不混合'不完整'模型和有效的模型可能会有点复杂。根据您的应用程序的复杂性,这可能不是一个好主意 - 在这种情况下,我会建议坚持您的初始计划。

+0

我昨天晚上用tempObjects完成了这个。但是,在读完你的内容之后,我想我可以用同样的方法使用未验证的对象。我只是在会话中有一个未保存的对象,可以用来显示上一篇文章中提交的文件。 – Greg 2013-05-02 13:25:07