2013-05-04 42 views
8

一旦您上傳了文件,是否可以在保存模型之前打開該文件?在將其保存在Rails模型中之前打開臨時文件

我正在使用Paperclip將文件保存在/ public文件夾中。

class Book < ActiveRecord::Base 
    before_save :open_it 
    has_attached_file :upload 

    def open_it 
    a_file = open(upload.url) # this doesn't work before save ? 
    # ... 
    end 
end 
+2

Carrierwave可以,相信回形針也可以.. – MikDiet 2013-05-04 00:39:42

+0

@MikDiet我實際上結束了使用CarrierWave,我有更好的體驗:) – 2013-08-18 02:14:18

回答

13

發現:

def model_method 
    f = open(self.upload.queued_for_write[:original].url) 
end 

更新:

基於從ecoologic響應,使用.path代替.url爲較新版本的回形針寶石

+1

熱狗!爲我節省了一些時間。我在我的模型中使用了after_post_process回調,並且在嘗試讀取回調中的文件時遇到了NO FILE FOUND。 – 2014-08-10 07:22:55

+0

你做了什麼來解決這個問題? – drmwndr 2014-12-17 03:00:48

5

足夠接近的,但.url沒有爲我工作,path工作。

file = open(uploaded.queued_for_write[:original].path) 

訣竅。

相關問題