Carrierwave没有这样的文件或目录

时间:2015-09-15 03:29:22

标签: ruby-on-rails ruby carrierwave

我正在尝试编写一个方法,使用EXIFR gem来检索有关使用Carrierwave上传的照片的数据(在本例中为相机模型)。我正在使用的当前方法在我的模型中看起来像这样:

before_save  :get_exif_data 

        def get_exif_data
          imgfile = EXIFR::JPEG.new(photo.filename)

          return

          self.model = imgfile.model  

        end

然而,我收到错误"没有这样的文件或目录 - IMG_0953.JPG" (或其他文件名)。

我的目标是提取"类型的相机"保存前使用EXIFR gem的.model方法的数据。从EXIFR gem文档:

EXIFR::JPEG.new('IMG_6841.JPG').model               # => "Canon PowerShot G3"

错误告诉我,我的photo.filename尚未创建。如何在保存图像之前处理图像?

2 个答案:

答案 0 :(得分:1)

实际上,像以下这样的东西最终为我工作:

before_save :get_camera

private
    def get_camera
        self.model = EXIFR::JPEG.new(photo.file.path).model
    end
end

答案 1 :(得分:0)

尝试

EXIFR::JPEG.new(Rails.root.to_s + photo.filename_url)

carrierwave返回的网址如/uploads/... 它是webapp的相对路径,但EXIFR::JPEG会认为它是系统文件的路径