इस तरह मैं इसे करूँगा।
एक टेक्स्ट क्षेत्र प्रदान करें जो अल्पविराम से अलग ईमेल सूची स्वीकार करता है। परिभाषित करें एक नई कार्रवाई जो इस सूची में प्रत्येक ईमेल को निमंत्रण भेजती है।
इस उदाहरण के लिए उपयोगकर्ता मॉडल और उपयोगकर्ता नियंत्रक मानते हैं।
बैच_इनवाइट कार्रवाई के लिए एक मार्ग परिभाषित करें।
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 %>
कुछ नोट:
आप अपने नियंत्रक पतला चाहें, तो आप तर्क मॉडल के लिए, चल सकता उदाहरण के लिए, अपने प्रयोक्ता मॉडल और पास में एक send_batch_invitations विधि बनाने के द्वारा पैरामीटर [: user_emails] उपयोगकर्ता नियंत्रक से उस विधि के लिए तर्क के रूप में।
के बाद से विधि द्वारा भेजे जाने वाले निमंत्रण को पूरा करने के लिए पर्याप्त समय लग सकता है, मैं तुम्हें इस तरह के delayed_job या resque के रूप में एक पृष्ठभूमि काम प्रोसेसर के इस कार्य असाइन करते हैं, सुझाव है। railscasts हैं जो इन दो पृष्ठभूमि जॉब प्रोसेसर का उपयोग प्रदर्शित करते हैं।
मुझे लगता है कि आप devise_invitable मणि का उपयोग कर रहे हैं। क्या उपयोगकर्ता ईमेल पते का उपयोग करके उपयोगकर्ताओं के बैच को आमंत्रित करता है? – Shreyas
हाँ, आपके पास दोनों सही हैं। Devise_invitable का उपयोग करके, और आप केवल ई-मेल पता दर्ज करते हैं, उपयोगकर्ता को ई-मेल मिलता है, और उन्हें भेजे गए स्वीकृति लिंक का उपयोग करके अपना पासवर्ड सेट करता है। –