2010-11-11 5 views
8

मेरे पास मेरे ऐप के भीतर "समूह" संसाधन है जो उपयोगकर्ता शामिल हो सकते हैं (एक समूह has_and_belongs_to_many उपयोगकर्ता और इसके विपरीत)। devise_invitable प्लगइन मेरे ऐप पर किसी मौजूदा उपयोगकर्ता को साइट पर पंजीकरण करने के लिए किसी अन्य कविता उपयोगकर्ता को आमंत्रण ईमेल करने की अनुमति देता है, लेकिन मुझे कुछ अतिरिक्त कार्यक्षमता चाहिए: मैं चाहता हूं कि कोई उपयोगकर्ता किसी को किसी विशेष समूह पर आमंत्रित करे, ताकि वह जैसे ही वे ईमेल में उस निमंत्रण को स्वीकार करते हैं, वे उस समूह में शामिल होने के लिए एक लिंक देख सकते हैं।रेल पर रुबी में समूह जोड़ने के लिए devise_invitable का उपयोग करना?

क्या किसी ने ऐसा कुछ करने के लिए devise_invitable का उपयोग किया है? इस अतिरिक्त कार्यक्षमता को जोड़ने के बारे में जाने का सबसे अच्छा तरीका क्या है? ऐसा लगता है कि मुझे आमंत्रण ईमेल में समूह की पहचान करने के लिए "ग्रुप टोकन" का कुछ प्रकार शामिल करना होगा, फिर उसे यूआरएल में वापस भेज दें जिसे उपयोगकर्ता आमंत्रण स्वीकार करने के लिए क्लिक करता है।

क्या मुझे निमंत्रण नियंत्रक विधियों को ओवरराइड करना चाहिए, या क्या कोई अन्य प्लगइन है जो उद्देश्य को बेहतर तरीके से सेवा प्रदान करता है?

उत्तर

7

मैंने अभी कुछ बहुत ही समान कार्यान्वित किया है। मैंने devise_invitable का उपयोग करने की कोशिश की है लेकिन यह बहुत काम करना था। तो मैंने कुछ अन्य प्लगइन्स की तलाश की लेकिन मुझे कुछ भी नहीं मिला और मैंने निष्कर्ष निकाला कि यह अपना खुद का कार्यान्वयन लिखना आसान था।

  • एक निमंत्रण संसाधन जोड़ने,

  • जब कोई उपयोगकर्ता एक निमंत्रण मैं एक निमंत्रण क्षेत्र में स्टोर बनाने में सभी जानकारी मैं लागू करने की आवश्यकता है (यह एक धारावाहिक हैश है): यह मैं क्या किया है उपयोगकर्ता उस निमंत्रण

  • एक ईमेल आमंत्रित उपयोगकर्ता के लिए बाहर भेज दिया जाता स्वीकार करेंगे करने के लिए, ऐसा लगता है एक लिंक होता है:/उपयोगकर्ताओं/साइनअप invitation_token = 1231223123

  • जब हमें लिंक पर मैं क्लिक करता हूं जो उपयोगकर्ता बनाता है और समूह सदस्यता, नाम, भूमिकाओं जैसे आमंत्रण में संग्रहीत सभी जानकारी लागू करता है ...

  • यदि आमंत्रित उपयोगकर्ता को लिंक के मुकाबले सेवा के लिए साइन अप करने की आवश्यकता नहीं है ईमेल अलग है: निमंत्रण/123/स्वीकार invitation_token = 12312312asdas324

आशा इस मदद

6

मैं आमंत्रित करता नियंत्रक अधिभावी द्वारा यह कर लें, निर्देश यह करने के लिए पर devise_invitable मुख्य पृष्ठ में हैं? github तो मैं यहाँ में नहीं जाऊंगा।

सुरक्षा के लिए, मैंने एक नई तालिका बनाई है जिसमें अतिरिक्त निमंत्रण जानकारी है ताकि ईमेल स्वीकार करने वाले लिंक समूह लिंक को न पकड़ें (मेरे समूह केवल निजी आमंत्रण से हैं इसलिए मैं नहीं चाहता कि एक आमंत्रित उपयोगकर्ता आमंत्रण को बदलने के लिए ईमेल में यूआरएल और संभवतः उन अन्य समूहों को जोड़ें जिन्हें उन्हें आमंत्रित नहीं किया गया था)।

devise_invitable उपयोगकर्ता तालिका में इसे बनाने के बाद नई तालिका उपयोगकर्ता आईडी द्वारा अनुक्रमित की जाती है।

class Users::InvitesController < Devise::InvitationsController 
. 
. 
def create 

    # make sure the current user is connected to this object for security 
    if @object.has_connection_with(current_user) 

     # perform the invite  
     self.resource = resource_class.invite!(params[resource_name], current_inviter) 

     #since we invite based on object, we must reference this object once the user accepts, so we store this in our Invites table 
     object_invite = Invite.new(:invitable_type => @object.class.name, :invitable_id => @object.id, :user_id => self.resource.id, :inviter_id => current_inviter.profile.id) 
     object_invite.save! 

     if resource.errors.empty? 
     set_flash_message :notice, :send_instructions, :email => self.resource.email 
     #respond_with resource, :location => after_invite_path_for(resource) 
     render :json => {:status => 'success'} and return 
     else 
     respond_with_navigational(resource) { render_with_scope :new } 
     end 
    end 
    end 

फिर अपने अद्यतन विधि में (फिर से वही नियंत्रक में) आप (पा सकते हैं) आमंत्रित रिकॉर्ड और आवश्यक जानकारी है कि आप समूह में नए उपयोगकर्ता कनेक्ट करने के लिए अनुमति देगा खींच।

ईमेल का अतिरिक्त पैरामीटर जोड़ने के लिए एकमात्र मुद्दा यह है कि समूह नाम, जिसे मैंने अभी तक हल नहीं किया है।

+0

बढ़िया, धन्यवाद – overlox

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