2011-01-25 22 views
26

Ho un modello post e un modello podcast. Entrambi i modelli hanno un attributo dal titolo: image. Sto utilizzando un uploader Carrierwave (denominato ImageUploader) per gestire entrambi i modelli. Ho due domande prima di entrare in produzione.Carrierwave; caricatori multipli o solo uno?

domanda stupida:

E 'ok per utilizzare la stessa uploader per due modelli differenti quando entrambi hanno lo stesso nome di attributo per i loro attachements di file? scusate se sembra ovvio

domanda principale:

voglio creare tre versioni di ogni immagine post sul blog (pollice, di grandi dimensioni, seppia) e solo 1 versione di ogni immagine podcast (pollice).

Devo utilizzare due caricatori ora o posso usare lo spazio dei nomi con quello che sto già utilizzando?

Anche in questo caso probabilmente sembra ovvio. Probabilmente avrei scritto il secondo uploader nel tempo in cui mi ha portato a fare queste domande

+0

E 'una domanda molto buona – BKSpurgeon

risposta

39

È possibile utilizzare lo stesso uploader su modelli diversi anche se hanno nomi di attributo diversi. per esempio.

class Post 
    mount_uploader :image, ImageUploader 
end 

class Podcast 
    mount_uploader :photo, ImageUploader 
end 

Se si desidera o meno è una questione diversa. Nel tuo caso, creerei caricatori diversi per ogni modello, perché hanno requisiti diversi. È sempre possibile utilizzare sottoclassi se si desidera mantenere il vostro codice a secco:

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

grazie, che rende molto più chiaro per me – stephenmurdoch

Problemi correlati