2011-01-25 21 views
26

Tengo modelo y podcast modelo. Ambos modelos tienen un atributo titulado: imagen. Estoy usando un cargador de Carrierwave (llamado ImageUploader) para manejar ambos modelos. Tengo dos preguntas antes de entrar en producción.Carrierwave; cargadores múltiples o solo uno?

Pregunta tonta:

¿Está bien usar el mismo cargador para dos modelos diferentes cuando ambos tienen el mismo nombre de atributo para sus archivos adjuntos de archivos? siento si parece obvio

pregunta principal:

quiero crear tres versiones de cada imagen de blog de (pulgar, grande, sepia) y sólo 1 de versión cada imagen de podcast (pulgar) de.

¿Debo utilizar dos cargadores ahora o puedo usar el espacio de nombres con el que ya estoy usando?

De nuevo, parece obvio. Probablemente podría haber escrito el segundo cargador en el tiempo que me llevó a hacer estas preguntas

+0

Es una muy buena pregunta – BKSpurgeon

Respuesta

39

Puede usar el mismo cargador en diferentes modelos, incluso si tienen diferentes nombres de atributos. p.ej.

class Post 
    mount_uploader :image, ImageUploader 
end 

class Podcast 
    mount_uploader :photo, ImageUploader 
end 

Si lo desea o no, es una cuestión diferente. En su caso, crearía diferentes cargadores para cada modelo, porque tienen diferentes requisitos. Siempre se puede usar subclases si desea mantener su código seca:

class ImageUploader < Carrierwave::Uploader::Base; end # thumbnail 
class PostImageUploader < ImageUploader; end # thumbnail (from superclass), large & sepia 
class PodcastImageUploader < ImageUploader; end # thumbnail (from superclass) 
+1

gracias, que hace que sea mucho más claro para mí – stephenmurdoch

Cuestiones relacionadas