2011-08-16 33 views
7

Tôi đang cố gắng sử dụng Devise để mời thêm nhiều người dùng cùng một lúc. Về cơ bản khi ai đó tạo tài khoản, điều đầu tiên họ sẽ muốn làm là thêm một nhóm người dùng bằng biểu mẫu có thể mời ...Hãy đưa ra lời mời tham gia hàng loạt có thể mời - Ruby on rails

chỉ không chắc chắn cách sao y các trường trong biểu mẫu và yêu cầu tạo yêu cầu tạo cho mỗi mục nhập.

Cảm ơn trước!

+0

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

+0

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ọ. –

Trả lời

13

Đâ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 ý:

  1. 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.

  2. 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.

Các vấn đề liên quan