Ruby on rails 重命名模型和迁移数据库时,如何重命名用于在carrierwave中上载的文件夹?

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

我试图重命名一个模型和相应的表,结果很好。上传文件夹呢?使用类似这样的方法将uploader文件夹绑定到模型类名。现在类名已更改

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

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end
类CsvImportUploaderUploader您可以继续使用相同的型号名称。 如果您有一个用户模型,该模型将转换为:

User => 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任务中,您似乎必须手动重命名文件夹。现在我可以想象这在分布式系统/集群上是一场噩梦。