2011-01-25 11 views
26

मेरे पास पोस्ट मॉडल और पॉडकास्ट मॉडल है। दोनों मॉडलों में एक विशेषता शीर्षक है: छवि। मैं दोनों मॉडलों को संभालने के लिए एक Carrierwave अपलोडर (ImageUploader नामित) का उपयोग कर रहा हूं। उत्पादन में जाने से पहले मेरे पास दो प्रश्न हैं।कैरियरवेव; एकाधिक अपलोडर या सिर्फ एक?

बेवकूफ सवाल:

यह जब वे दोनों अपने फ़ाइल attachements के लिए एक ही विशेषता नाम है दो अलग अलग मॉडल के लिए एक ही अपलोड करने वाले का उपयोग करने के लिए ठीक है? खेद है ऐसा लगता है स्पष्ट

मुख्य सवाल:

मैं प्रत्येक ब्लॉग पोस्ट छवि के तीन संस्करण (अंगूठे, बड़े, सेपिया) और प्रत्येक पॉडकास्ट छवि (अंगूठे) का केवल 1 संस्करण बनाने के लिए चाहते हैं।

क्या मुझे अब दो अपलोडर का उपयोग करने की आवश्यकता है या क्या मैं उस नाम के साथ नामस्थान कर सकता हूं जिसका मैं पहले से उपयोग कर रहा हूं?

फिर शायद यह स्पष्ट प्रतीत होता है। मैं शायद समय में दूसरी अपलोड करने वाले लिख सकता इसकी मुझे ले लिया इन सवालों

+0

यह एक बहुत बहुत अच्छा प्रश्न – BKSpurgeon

उत्तर

39

पूछने के लिए भले ही वे अलग विशेषता नाम है, तो आप विभिन्न मॉडलों पर एक ही अपलोड करने वाले उपयोग कर सकते हैं। जैसे

class Post 
    mount_uploader :image, ImageUploader 
end 

class Podcast 
    mount_uploader :photo, ImageUploader 
end 

चाहे आप एक अलग मामला चाहते हों या नहीं। आपके मामले में, मैं प्रत्येक मॉडल के लिए अलग-अलग अपलोडर बनाउंगा, क्योंकि उनके पास अलग-अलग आवश्यकताएं हैं। तुम हमेशा उपवर्गों उपयोग कर सकते हैं आप अपने कोड सूखा रखने के लिए चाहते हैं:

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

धन्यवाद है, कि यह एक बहुत मेरे लिए स्पष्ट करता है – stephenmurdoch

संबंधित मुद्दे