使用carrierwave为不同的模型设置不同的存储目录

时间:2013-03-04 10:22:37

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

我有model1和model2。我需要在两个不同的目录中上传两个模型的图像。现在我的image_uploader是:

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick

  storage :file

  def store_dir
    "uploads/images"
  end
end

model2的图像应存储在uploads / images2中。我该如何定义?

2 个答案:

答案 0 :(得分:0)

对不起,问题不是很聪明。答案似乎是用

创建第二个上传者

rails g uploader model2

答案 1 :(得分:0)

如果你的上传者之间唯一不同的是store_dir函数,那么你不需要创建另一个上传器(尽管你可以)。在您的上传器中,您可以访问该模型,因此您可以执行以下操作:

def store_dir
    if model.class==Model1
        "upload/images1"
    elsif model.class==Model2
        "upload/images2"
    else
        "upload/images"
    end
end