2013-05-01 41 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