2011-12-28 15 views
6

¿Cómo se renombran las imágenes existentes con CarrierWave? (Esta pregunta está cerca, pero no es lo mismo: Renaming uploaded files with Carrierwave) Por ejemplo, si model.image.url es foo-bar-jpg, ¿cómo puedo cambiar el nombre del archivo y del campo de base de datos correspondiente al foo-bar.jpg?Cambiar el nombre de los archivos existentes de CarrierWave

model.image.recreate_versions! creará nuevos archivos pero en la base de datos no cambia el campo de imagen del modelo.

Respuesta

1

he utilizado la técnica descrita aquí: How to assign a remote file to Carrierwave?

esto puede no ser el mejor camino a seguir, Pero funcionó para mí. Mi archivo remoto resultó ser el antiguo nombre/ruta de archivo.

Primero, cambié el cargador de Carrierwave para tener el nuevo estilo de nombre de archivo que quería. Entonces escribí una tarea rastrillo para iterar a través de los registros y actualizar los archivos de la siguiente manera:

model.remote_image_url = old_image_url 
model.save! 

Esto cargará el archivo existente de nuevo, la configuración del nombre/ruta en función de su subida actualizado (y volver a crear todas las versiones). Todavía no he abordado el problema de limpiar los archivos antiguos, no estoy seguro de cómo funcionará si tu store_dir es el mismo (el mío también ha cambiado).

Asegúrate de probar minuciosamente en algunos registros antes de ejecutar toda la tabla, es fácil hacer un lío de cosas. Tenga en cuenta que cambiar su store_dir romperá todas sus búsquedas de archivos existentes.

2

El locomotive branch de Carrierwave parece tener soporte para cambiar el nombre - el archivo específico es here.

Hay file rename support en lo principal al convertir tipos de archivos, pero no hay soporte de cambio de nombre:

"This should help with situations where a file has multiple versions, 
and at least one of the versions is of a different format than the master version." 
0

Encontramos este, parece anticuado, pero tal vez ayude a alguien: https://github.com/stvkoch/carrierwave_single_store

Cuestiones relacionadas