carrierwave uploader上传文件,但仍然提供default_url

时间:2012-01-02 22:08:08

标签: ruby-on-rails ruby-on-rails-3 mongomapper carrierwave

我在rails 3应用程序中使用carrierwave来从我服务器的文件系统中的远程源上传和存储文件。我有一个完全标准的设置,在与模型相关联的模型上安装了一个上传器。

它在99.9%的时间内完美运行,但每600个图表左右我遇到一个问题,即应用程序持续无法提供存储的图像。如果我检查文件系统,图形图像已经上传并存储在正确的位置,具有正确的文件权限和所有内容,但rails完全没有意识到它并继续为该实例提供默认的图形图像。

换句话说,id为123的图形将其图像存储在/uploads/graphs/123/graph.png ...正确的图像存在但是就轨道而言,它没有存储图像。所有其他图形图像仍然可以正常工作,但我无法知道存储为123的图像。删除和重新存储图像不起作用。手动删除图像并重新上传不起作用。我完全迷失了。图表实例有效,保存时日志中没有错误。

例如,在控制台中:

g = Goal.find_by_id("123")
g.remote_graph_url = "http://image.source/url.png"
> "http://image.source/url.png"
g.save
> true
g.graph?
> false
g.graph_url >> /default/image.png

这是相关的代码:

class GraphUploader < CarrierWave::Uploader::Base
  def store_dir
    "../uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  def default_url
    "/images/" + [version_name, "default_large_graph.png"].compact.join('_')
  end
  def extension_white_list
    %w(jpg jpeg gif png)
  end
  def filename
    "graph.png" if original_filename
  end
end

class Graph 
  mount_uploader :graph, GraphUploader
end

1 个答案:

答案 0 :(得分:0)

希望我能回答......

所以你要将上传保存在公共目录之外?尝试删除&#34; ../"在图像之前,如果那不是你的意图。