2013-05-04 39 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) 

诀窍。

相关问题