2012-02-26 21 views
5

मैं वसीयत स्थापित किया है और बनाया उपयोगकर्ता और भी इस ट्यूटोरियल से विकल्प 1 का उपयोग कर https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleअद्वितीय आईडी

अब मैं एक छोटे से मदद की जरूरत है व्यवस्थापक। व्यवस्थापक जोड़ते समय यह एक अलग टेबल बनाता है, और संभावित उत्पन्न होता है कि व्यवस्थापक और नियमित उपयोगकर्ताओं के पास एक ही आईडी हो सकती है।

तो उपयोगकर्ताओं और व्यवस्थापक से जानकारी को पकड़ने के बारे में मुझे वास्तव में कैसे मिला? उदाहरण के लिए कहें मैं सभी उपयोगकर्ताओं को प्रदर्शित करना चाहता हूं? क्या मुझे उपयोगकर्ता तालिका और फिर व्यवस्थापक तालिका को पार करना है?

या यदि मैं एक पोस्ट प्रदर्शित कर रहा हूं। उपयोगकर्ता या व्यवस्थापक जानकारी प्राप्त करने के लिए मुझे कौन सी तालिका देखने के लिए पता चलेगा?

मुझे पता है कि मैं केवल उपयोगकर्ता तालिका में एक भूमिका कॉलम जोड़ सकता हूं लेकिन मैं इससे बचना चाहता था।

मैं इस समझ में आता है haha ​​

उत्तर

12

मैं अत्यधिक एकल टेबल विरासत (एसटीआई) उपयोग करने की अनुशंसा की उम्मीद है। आप users तालिका में एक string डेटाप्रकार के साथ एक स्तंभ नामित type जोड़कर एसटीआई करते हैं और एक normal_user मॉडल दोनों मॉडलों devise मणि के user मॉडल से प्राप्त कर लेंगे और साथ ही एक admin मॉडल बना सकते हैं।

class NormalUser < User 
end 

class Admin < User 
end 

प्रकार स्तंभ एक आरक्षित शब्द है जो उपयोगकर्ता प्रकार आपके द्वारा बनाए गए के अनुसार एक मूल्य या तो NormalUser या Admin रखा जाएगा।

बनाने के लिए एक व्यवस्थापक Admin.create(...) का उपयोग करें और जहां डॉट्स Admin की विशेषताओं और NormalUser

+0

@ mohammed.magdy बहुत बढ़िया मुझे लगता है यह मैं क्या देख रहा था है एक सामान्य उपयोगकर्ता उपयोग NormalUser.create(...) बनाने के लिए। क्या आप उचित प्रमाणीकरण कोड स्थापित करने में मेरी मदद कर सकते हैं। मैं Rails_Admin का उपयोग करने का प्रयास कर रहा हूं इसलिए मुझे व्यवस्थापक को प्रमाणीकृत करने का एक तरीका चाहिए। – Dan

+2

निश्चित रूप से, उपयोगकर्ता तालिका में, आपने नाम के एक कॉलम को जोड़ा जो एक स्ट्रिंग डेटाटाइप है। प्रकार कॉलम का मान या तो व्यवस्थापक या NormalUser (हमारे मामले में यहां) होगा। जब कोई उपयोगकर्ता लॉग इन होता है, तो आप उपयोगकर्ता के प्रकार को उपयोगकर्ता.आरबी में जोड़कर प्राप्त कर सकते हैं जो हस्ताक्षरित उपयोगकर्ता प्रकार की जांच करता है। व्यवस्थापक के लिए व्यवस्थापक नाम की एक विधि परिभाषित करने के लिए? शरीर self.is_a होगा (व्यवस्थापक) अगर यह साइन इन किया गया उपयोगकर्ता व्यवस्थापक है तो यह सच हो जाएगा अन्यथा झूठी वापसी होगी। NormalUser के लिए, user.rb फ़ाइल में def normal_user नामक एक विधि जोड़ें? विधि का शरीर self.is_a होगा (NormalUser)। – mohamagdy

+0

प्रमाणीकरण के लिए, मैं कैनकन मणि का उपयोग करने की सलाह देता हूं लेकिन यदि भूमिकाएं बहुत ज्यादा नहीं हैं तो देवता प्राधिकरण और प्रमाणीकरण दोनों में आपके लिए काम करेगी। – mohamagdy

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