2011-08-16 2 views
7

사용자가 여러 사용자를 한꺼번에 추가 할 수 있도록 초대하려고합니다. 기본적으로 누군가가 계정을 만들면 초대 할 수있는 양식을 사용하여 많은 사용자를 추가하는 것입니다. ...Devise invitable batch invite - Ruby on rails

양식에 입력란을 복제하고 작성 요청을 보내는 방법을 모르겠습니다. 각 항목에 대해

미리 감사드립니다.

+0

나는 당신이 devise_invitable 보석을 사용하고 있다고 가정합니다. 사용자가 이메일 주소를 사용하여 일괄 사용자를 초대합니까? – Shreyas

+0

그래, 너는 양쪽 다 똑같아. Devise_invitable을 사용하여 전자 메일 주소를 입력하면 사용자는 전자 메일을 받고 자신에게 전송 된 수락 링크를 사용하여 암호를 설정합니다. –

답변

13

이렇게하면됩니다.

쉼표로 구분 된 이메일 목록을 허용하는 텍스트 영역을 제공하십시오. 이 목록의 각 이메일에 초대장을 보내는 새로운 작업을 정의하십시오.

이 예의 경우 사용자 모델과 사용자 컨트롤러를 가정합니다.

batch_invite 작업의 경로를 정의하십시오.

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 방법을 작성하여, 모델에 논리를 움직일 수 params [: user_emails]를 사용자 컨트롤러의 해당 메소드에 대한 인수로 사용합니다.

  2. 초대장을 보내는 방법으로 완료하는 데 충분한 시간이 걸릴 수 있으므로이 작업을 배경 작업 프로세서 (예 : delayed_job 또는 resque)에 할당하는 것이 좋습니다. 이 두 가지 백그라운드 작업 프로세서의 사용법을 보여주는 railscasts이 있습니다.