2012-05-04 8 views
5

मैं निजी संसाधनों को संभालने के लिए डेविस, कैनकन और रोलिफ़ी के आधार पर एक एप्लिकेशन बना रहा हूं।रेल उपयोगकर्ता के माध्यम से रोलिफ भूमिका जोड़ें

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

अब मैं उपयोगकर्ता भूमिका से निपट रहा हूं। मैं व्यवस्थापक को उपयोगकर्ताओं को बनाने और एक ही फॉर्म का उपयोग करके अपनी भूमिका निर्धारित करने की अनुमति देना चाहता हूं। मुझे नहीं पता कि किस प्रकार का रिश्ता रोलिफ़ाई का उपयोग कर रहा है क्योंकि मैं रेल के लिए काफी नया हूं और रूबी और रोलिफी ने अधिक स्पष्ट संबंध के बजाय rolify विधि को जोड़ा।

मुझे वर्तमान में केवल प्रति उपयोगकर्ता की आवश्यकता है और चाहते हैं। इसलिए यदि कोई व्यक्ति भूमिका को बदलने वाले उपयोगकर्ता को संपादित करता है तो मैं सभी @user.roles हटा देता हूं और फिर नया सेट करता हूं।

मैं वर्तमान में इसे एक साधारण हैक का उपयोग करके काम करने के लिए कर रहा हूं। मैंने भूमिकाओं का चयन प्रदान करने के लिए Role एस के संग्रह का उपयोग करके फ़ॉर्म में एक चयन फ़ील्ड जोड़ा है। तब create और update तरीकों के अंदर मैं यह कर रहा हूँ:

role = params[:user][:role] 
params[:user].delete :role 
@user = User.new(params[:user]) 

respond_to do |format| 
    if @user.save # update_attributes inside update 
    @user.add_role role 
    # ... 
    end 
end 

आप मैं Role मॉडल के साथ सीधे बातचीत नहीं कर रहा हूँ, लेकिन उपलब्ध कराई गई add_role पद्धति का उपयोग करके देख सकते हैं के रूप में। यह एक और मुद्दा भी बनाता है, क्योंकि मुझे अद्यतन दृश्य को चुनने के लिए उचित डिफ़ॉल्ट मान सेट करने की अनुमति देने के लिए वर्तमान भूमिका को पुनर्प्राप्त करना होगा (सबसे महत्वपूर्ण तथ्य के बगल में कि मुझे नहीं पता कि एक भूमिका की उपस्थिति को कैसे सत्यापित किया जाए)।

यह एक बहुत गंदगी समाधान होने जा रहा है, इसलिए मुझे कुछ बिंदु देखना है, और शायद यह करने के बारे में कुछ सुझाव। मैं सारा दिन बिताया है इस :-(

पर काम कर आप कुछ जानकारी की जरूरत है मुझे कहें।

पी एस मैं नेस्ट संसाधनों के बारे में एक screenscast देख रहा हूँ, लेकिन डीबी में मुझे लगता है कि यह उपयोग कर रहा है देख सकते हैं एक तिहाई तालिका !!

उत्तर

2

users_roles का ट्रैक रखने के है और मैं इसे कैसे करना है समझ नहीं कर रहा हूँ। धन्यवाद अंत मैं Rolify छोड़ करने के लिए पसंद पर। यह मेरे लिए बहुत अधिक समय ले रहा था, और मैंने महसूस किया मुझे एक बहुत ही सरल समाधान की आवश्यकता है, इसलिए अब मैं अपने मॉडल में एक नया कॉलम उपयोग कर रहा हूं, उपयोगकर्ता को वर्णन करता हूं, और मैंने कैनकन के साथ संगतता रखने के लिए has_role से संबंधित एक विधि भी लागू की है।

इसने कई समस्याएं हल की हैं, और यह एक आम समाधान है (= आसान सहायता)।

मेरे अनुभव में मैंने देखा कि यदि कोई भी 30 मिनट में SO पर आपके प्रश्न का उत्तर नहीं देता है, तो आप इसे बहुत जटिल बना रहे हैं।

सभी को धन्यवाद।

+0

लॉल ... मैं अपना रास्ता तय कर रहा हूं, रोलिफ़ जेम को समझने में बहुत अधिक समय लग रहा था। – Benjamin

+1

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

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