2011-08-16 8 views
7

मैं उपयोगकर्ता को एक बार में कई उपयोगकर्ताओं को जोड़ने के लिए आमंत्रित करने का प्रयास कर रहा हूं। असल में जब कोई खाता बनाता है, तो पहली बात यह है कि वे आमंत्रित करना चाहते हैं, इनवेबल फॉर्म का उपयोग कर उपयोगकर्ताओं का एक समूह जोड़ें ...डेविस इनवेबल बैच आमंत्रण - रेल पर रूबी

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

अग्रिम धन्यवाद!

+0

मुझे लगता है कि आप devise_invitable मणि का उपयोग कर रहे हैं। क्या उपयोगकर्ता ईमेल पते का उपयोग करके उपयोगकर्ताओं के बैच को आमंत्रित करता है? – Shreyas

+0

हाँ, आपके पास दोनों सही हैं। Devise_invitable का उपयोग करके, और आप केवल ई-मेल पता दर्ज करते हैं, उपयोगकर्ता को ई-मेल मिलता है, और उन्हें भेजे गए स्वीकृति लिंक का उपयोग करके अपना पासवर्ड सेट करता है। –

उत्तर

13

इस तरह मैं इसे करूँगा।

एक टेक्स्ट क्षेत्र प्रदान करें जो अल्पविराम से अलग ईमेल सूची स्वीकार करता है। परिभाषित करें एक नई कार्रवाई जो इस सूची में प्रत्येक ईमेल को निमंत्रण भेजती है।

इस उदाहरण के लिए उपयोगकर्ता मॉडल और उपयोगकर्ता नियंत्रक मानते हैं।

बैच_इनवाइट कार्रवाई के लिए एक मार्ग परिभाषित करें।

resources :users do 
    collection do 
    post 'batch_invite' 
    end 
end 

users_controller

def batch_invite 
    #Validate the user_emails field isn't blank and emails are valid 
    params[:user_emails].split(",").each do |email| 
    User.invite!(:email => email) 
    end 
    #redirect_to appropriate path 
end 

एक रूप है कि एक पाठ क्षेत्र में ईमेल को अल्पविराम द्वारा पृथक सूची को स्वीकार करता है में batch_invite एक्शन परिभाषित करें।

<%= form_tag batch_invite_users_path, :method => :post do %> 
    <%= label_tag "Email ids of people you'd like to invite." %> 
    <%= text_area_tag :user_emails %> 
    <%= submit_tag "Invite!" %> 
<% end %> 

कुछ नोट:

  1. आप अपने नियंत्रक पतला चाहें, तो आप तर्क मॉडल के लिए, चल सकता उदाहरण के लिए, अपने प्रयोक्ता मॉडल और पास में एक send_batch_invitations विधि बनाने के द्वारा पैरामीटर [: user_emails] उपयोगकर्ता नियंत्रक से उस विधि के लिए तर्क के रूप में।

  2. के बाद से विधि द्वारा भेजे जाने वाले निमंत्रण को पूरा करने के लिए पर्याप्त समय लग सकता है, मैं तुम्हें इस तरह के delayed_job या resque के रूप में एक पृष्ठभूमि काम प्रोसेसर के इस कार्य असाइन करते हैं, सुझाव है। railscasts हैं जो इन दो पृष्ठभूमि जॉब प्रोसेसर का उपयोग प्रदर्शित करते हैं।

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