2017-02-27 61 views
0

我想重命名模型和相应的表,它工作得很好。上传文件夹怎么样?使用类似这样的上传器文件夹绑定到模型类名称。现在类名已经改变了。如何在重命名模型和迁移数据库时重命名用于carrierwave上载的文件夹?

class CsvImportUploaderUploader < CarrierWave::Uploader::Base 
    permissions 0755 

    storage :file 

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

看来你必须在迁移或作为rake任务的一部分手动重命名文件夹。 现在我可以想象这是如何成为分布式系统/集群上的噩梦。 –

回答

0

您可以继续使用相同的型号名称。 如果你有一个用户模式,将从转换:

User => user 

model.class.to_s.underscore只返回类名称本身作为一个字符串,强调这是“用户”,在这个例子。

如果你想保留一切,因为它是只写它的字面:

"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
"uploads/user/#{mounted_as}/#{model.id}" 

如果你不关心的名称,只是有在不同的文件夹存储。 如果你有一个用户模型,并将其改变为客户模式它的变化是这样的:

"uploads/user/#{mounted_as}/#{model.id}" 
"uploads/customer/#{mounted_as}/#{model.id}" 

正如你所看到的,他们只是在不同的文件夹存储。您的所有链接仍应继续工作。