2010-04-29 9 views
7

मेरे आवेदन पर paperclip का उपयोग करके मेरे पास संलग्नक के साथ कई चीजें हैं।रेल + पेपरक्लिप: क्या एक सामान्य "अनुलग्नक" मॉडल एक अच्छा विचार है?

  • ग्राहकों के पास एक लोगो है।
  • स्टोर में एक या अधिक तस्वीरें हो सकती हैं। इन तस्वीरों के अलावा, अन्य जानकारी हो सकती है जैसे कि उन्हें किस तारीख में लिया गया था।
  • उत्पादों में उनमें से एक या अधिक चित्र हो सकते हैं, वर्गीकृत (फ़ॉन्ट से, वापस, आदि से)।
अभी के लिए

, मेरे मॉडल में से हर एक

मेरे क्लाइंट भी है अपने स्वयं के "पेपरक्लिप क्षेत्रों" (क्लाइंट has_attached_file) या has_many मॉडल है कि संलग्न फ़ाइलें (स्टोर has_many StorePictures, उत्पाद has_many ProductPictures) है मुझे बताया कि भविष्य में हम सिस्टम में अधिक अनुलग्नक जोड़ रहे हैं (यानी ग्राहकों के लिए पीडीएफ दस्तावेज़ डाउनलोड करने के लिए)।

मेरे आवेदन में declarative_authorization के साथ लागू एक जटिल प्राधिकरण प्रणाली है। उदाहरण के लिए, कोई ऐसे उत्पाद से चित्र डाउनलोड नहीं कर सकता जिसे उसे 'देखने' की अनुमति नहीं है।

मैं अपने कोड को फिर से फैक्टर करने पर विचार कर रहा हूं, इसलिए मेरे पास एक सामान्य "अटैचमेंट" मॉडल हो सकता है। तो कोई भी मॉडल has_many :attachments कर सकता है।

इस संदर्भ के साथ, यह एक अच्छा विचार की तरह लगता है? या मुझे फूओ और फूचित्र बनाना जारी रखना चाहिए?

उत्तर

5

मुझे पता चला है कि अक्सर ऐसे मामले होते हैं जहां एक सामान्य अटैचमेंट क्लास विभिन्न प्रकार के रिकॉर्ड पर स्वतंत्र अनुलग्नकों की तुलना में प्रबंधन करना बहुत आसान होता है। सरल अनुलग्नक दृष्टिकोण के लिए एकमात्र नीचे की तरफ यह है कि उत्पादित होने वाले थंबनेल को केस-दर-मामले आधार पर एक साथ सभी संभावित अनुलग्नकों के लिए परिभाषित किया जाता है।

एक संकर दृष्टिकोण जो अधिक लचीलापन की अनुमति देता है, एक 'प्रकार' कॉलम सहित एसटीआई-आधारित अनुलग्नक तालिका बनाना और विशिष्ट शैलियों को परिभाषित करने वाले उत्पाद एटैचमेंट जैसे विशिष्ट-विशिष्ट उप-वर्ग बनाना है।

+0

आपके उत्तर के लिए धन्यवाद। कुछ जगहों पर आवश्यक अतिरिक्त क्षेत्रों की वजह से मैं अंततः रिफैक्टरिंग नहीं कर पाया। एसटीआई करने से वहां मदद मिलेगी, लेकिन शामिल काम सिर्फ इसके लायक नहीं था। – kikito

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