Así es como lo haría.
Proporcione un área de texto que acepte una lista de correo electrónico separada por comas. Defina una nueva acción que envía una invitación a cada correo electrónico en esta lista.
Supongamos un modelo de usuario y un controlador de usuario para este ejemplo.
Define una ruta para la acción batch_invite.
resources :users do
collection do
post 'batch_invite'
end
end
definir la acción batch_invite en el 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
Una forma que acepta una lista separada por comas de mensajes de correo electrónico en un área de texto.
<%= 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 %>
Un par de notas:
Si te gusta el controlador flaco, que podría mover la lógica del modelo, por ejemplo, mediante la creación de un método send_batch_invitations en su modelo de usuario y pase los parámetros [: user_emails] como un argumento para ese método del controlador de usuarios.
Dado que el método que envía las invitaciones podría llevar bastante tiempo para completarse, le sugiero que asigne esta tarea a un procesador de trabajos en segundo plano, como delayed_job o resque. Hay railscasts que demuestran el uso de estos dos procesadores de trabajo en segundo plano.
Supongo que está utilizando la gema devise_invitable. ¿Invita el usuario a un grupo de usuarios solo con el uso de direcciones de correo electrónico? – Shreyas
Sí, tiene las dos correctas. Al usar Devise_invitable, y solo ingresa la dirección de correo electrónico, el usuario recibe un correo electrónico y establece su contraseña utilizando el enlace de aceptación que se le envió. –