Como posso reorganizar uma hierarquia de pastas existente com o CarrierWave?

Eu estou tentando mover arquivos em torno do meu balde S3 usandoCarrierWave para reorganizar a estrutura da pasta.

Eu vim para uma aplicação Rails existente onde todas as imagens para uma classe estão sendo carregadas em uma pasta chamada/uploads. Isso está causando problemas em que, se dois usuários fizerem upload de imagens diferentes com o mesmo nome de arquivo, a segunda imagem substituirá a primeira. Para resolver isso, eu quero reorganizar as pastas para colocar cada imagem em seu próprio diretório de acordo com oActiveRecord instância do objeto. Nós estamos usandoCarrierWave para gerenciar uploads de arquivos.

O antigo código de upload tinha o seguinte método:

def store_dir
  "uploads"
end

Eu modifiquei o método para refletir meu novo esquema de armazenamento de arquivos:

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

Isso funciona muito bem para novas imagens, mas quebra a URL de imagens antigas. As imagens existentes informam que sua URL está dentro da nova pasta imediatamente quando eu altero o modelo, enquanto os arquivos de imagem ainda estão armazenados em/uploads.

> object.logo.store_dir
=> "uploads/object/logo/133"

Isso não está correto. Esse objeto deve informar seu logotipo em/uploads.

Minha solução é escrever um script para mover os arquivos de imagem, mas não encontrei os métodos corretos no CarrierWave para mover os arquivos. Meu script seria algo parecido com isto:

MyClass.all.each |image|
  filename = file.name #This method exists in my uploader, returns the file name
  #Move the file from "/uploads" to "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end 

O que devo fazer na linha três do meu script para mover o arquivo para um novo local?

questionAnswers(1)

yourAnswerToTheQuestion