Carrierwave存储完整路径

时间:2014-06-06 08:59:47

标签: ruby-on-rails

是否有可能使CarrierWave在数据库中存储上传文件的完整路径而不仅仅是文件名,并在每次访问时重新生成它们?

我之所以想要这样做是为了能够更改我存储文件的结构,而不会将已上传的文件消失,直到它们移动到新的位置。

2 个答案:

答案 0 :(得分:1)

在你的上传器中,你有这样的结构:

class YourUploader < CarrierWave::Uploader::Base
  ...

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  ...
end

我认为如果您将store_dir更改为完整路径,它将执行您想要的操作。

答案 1 :(得分:1)

我的解决方法是将目录存储在单独的属性中:

class MyModel
  before_save do
    self.content_path ||= "uploads/my_model/contents/#{id}"
  end
end

然后您的上传器将如下所示:

class YourUploader < CarrierWave::Uploader::Base
  ...

  def store_dir
    model.content_path
  end

  ...
end