2011-06-30 10 views
5

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

अधिक जटिल हिस्सा शायद ऐसा मामला हो जहां एकाधिक उपयोगकर्ता एक ही मॉडल को संपादित कर सकते हैं और कुछ प्रकार के विलय करने का प्रयास कर रहे हैं।

+1

कभी भी समाधान ढूंढें? – ZMorek

उत्तर

1

एक दृष्टिकोण संस्करण अनुमोदन के साथ संस्करण करना होगा।

प्रत्येक संपादन मॉडल ऑब्जेक्ट और उसके संगठनों का एक नया संस्करण बनाता है। किसी भी समय किसी भी मॉडल ऑब्जेक्ट का केवल एक "वर्तमान" संस्करण होता है (और यह डेटाबेस में प्रतिनिधित्व है)।

यदि दो उपयोगकर्ता दो अलग-अलग संपादन सबमिट करते हैं, तो ये दो "लंबित" संस्करण बनाएंगे।

एक व्यवस्थापक वर्तमान संस्करण को नए "लंबित" संस्करण में स्थानांतरित करके संपादन को स्वीकृति देगा। विलय भी पूरा किया जा सकता है, लेकिन यह बहुत डोमेन विशिष्ट हो सकता है, और इसके परिणामस्वरूप विवाद हो सकता है, इसलिए अलग-अलग संस्करणों को बनाए रखना वैसे भी स्मार्ट होगा।

इसे पूरा करने के कुछ तरीके हैं, और सर्वोत्तम स्थिति की गतिशीलता पर निर्भर करेगा।

मैं यह देखने की सिफारिश करता हूं कि गिट कैसे काम करता है और उसके बाद आपके सिस्टम को मॉडल करने का प्रयास करता है। एक संशोधन इतिहास के साथ आपके HEAD मॉडल ऑब्जेक्ट के कुछ प्रकार के पॉइंटर और विभिन्न संशोधनों में HEAD को स्थानांतरित करने की क्षमता। विलय भी गिट के समान काम कर सकता है।

उम्मीद है कि मदद करता है।

+0

मुझे नहीं लगता कि मॉडल के अन्य संस्करण बनाने का तरीका है क्योंकि आप अन्य संस्करणों के साथ डेटाबेस को प्रदूषित करने जा रहे हैं। मैं वास्तव में सोच रहा हूं कि ऐसा करने के लिए paper_trail को संशोधित करने का एक तरीका होना चाहिए। एक नया संस्करण बनाने की तरह लेकिन वर्तमान ऑब्जेक्ट को अपडेट नहीं करना। – hadees

+0

अच्छी तरह से, आप पुराने संस्करणों को क्रॉन या अनुमोदन के साथ साफ़ कर सकते हैं, लेकिन यह अनिवार्य रूप से एक ही समस्या है। आप नए संस्करण बनाते हैं, फिर उन लोगों को हटाएं जिन्हें आप अब परवाह नहीं करते हैं। –

0

मैं इसी समस्या को देख रहा हूं i.e संशोधन के अनुमोदन में, मैं this पर आ सकता हूं, मुझे संदेह होगा कि आप paper_trail के साथ कुछ ऐसा कर सकते हैं।

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