Ruby on rails 重命名模型和迁移数据库时,如何重命名用于在carrierwave中上载的文件夹?
我试图重命名一个模型和相应的表,结果很好。上传文件夹呢?使用类似这样的方法将uploader文件夹绑定到模型类名。现在类名已更改Ruby on rails 重命名模型和迁移数据库时,如何重命名用于在carrierwave中上载的文件夹?,ruby-on-rails,carrierwave,rails-migrations,Ruby On Rails,Carrierwave,Rails Migrations,我试图重命名一个模型和相应的表,结果很好。上传文件夹呢?使用类似这样的方法将uploader文件夹绑定到模型类名。现在类名已更改 class CsvImportUploaderUploader < CarrierWave::Uploader::Base permissions 0755 storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.i
class CsvImportUploaderUploader < CarrierWave::Uploader::Base
permissions 0755
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
类CsvImportUploaderUploaderUser => user
model.class.to_.underline只是将类名本身作为带下划线的字符串返回,在本例中该字符串是“user”
如果你想让一切都保持原样,就直接写下来:
"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}"
如您所见,它们将存储在不同的文件夹中。您的所有链接都应保持工作状态。在迁移过程中或在rake任务中,您似乎必须手动重命名文件夹。现在我可以想象这在分布式系统/集群上是一场噩梦。