Đây là cách tôi sẽ làm.
Cung cấp vùng văn bản chấp nhận danh sách email được phân cách bằng dấu phẩy. Xác định một hành động mới gửi lời mời đến từng email trong danh sách này.
Cho phép giả sử Mô hình người dùng và bộ điều khiển người dùng cho ví dụ này.
Xác định tuyến đường cho hành động batch_invite.
resources :users do
collection do
post 'batch_invite'
end
end
Xác định hành động batch_invite trong 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
Một hình thức mà chấp nhận một danh sách bằng dấu phẩy của email trong một textarea.
<%= 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 %>
Một vài lưu ý:
Nếu bạn thích điều khiển của bạn gầy, bạn có thể di chuyển logic để mô hình, ví dụ, bằng cách tạo ra một phương pháp send_batch_invitations trong mô hình tài khoản của bạn và vượt qua params [: user_emails] như một đối số cho phương thức đó từ bộ điều khiển người dùng.
Vì phương thức gửi lời mời có thể mất đủ thời gian để hoàn thành, tôi khuyên bạn nên gán tác vụ này cho bộ xử lý công việc nền, chẳng hạn như delayed_job hoặc resque. Có railscasts minh họa việc sử dụng hai bộ xử lý công việc nền này.
Tôi đoán bạn đang sử dụng đá quý devise_invitable. Người dùng có mời một nhóm người dùng chỉ bằng cách sử dụng địa chỉ email không? – Shreyas
Yup, bạn có cả hai quyền. Sử dụng Devise_invitable, và bạn chỉ cần nhập địa chỉ e-mail, người dùng sau đó nhận được một e-mail, và đặt mật khẩu của họ bằng cách sử dụng liên kết chấp nhận được gửi đến họ. –