2011-08-16 13 views
7

私はユーザーに一度に複数のユーザーを追加するよう招待しています。基本的に誰かがアカウントを作成したときに、最初に行うのは、招待状を使って多数のユーザーを追加することです。招待状の招待状 - Ruby on rails

フォームのフィールドを複製して、各エントリについて

ありがとうございます!

+0

あなたはdevise_invitable gemを使用しているとします。ユーザーは電子メールアドレスを使用するだけで一群のユーザーを招待しますか? – Shreyas

+0

うん、あなたは両方の権利を持っています。 Devise_invitableを使用し、電子メールアドレスを入力するだけで、ユーザーは電子メールを受け取り、送信された受け入れリンクを使用してパスワードを設定します。 –

答えて

13

これは私がやる方法です。

コンマで区切られた電子メールリストを受け入れるテキスト領域を提供します。 を定義して、このリストの各メールに招待状を送信する新しいアクションを定義します。

この例では、ユーザーモデルとユーザーコントローラを想定しています。

batch_inviteアクションのルートを定義します。

resources :users do 
    collection do 
    post 'batch_invite' 
    end 
end 

users_controllerでbatch_invite作用

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 

テキストエリアに電子メールのカンマ区切りリストを受け付けるフォームを定義します。

<%= 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. あなたのコントローラーがスキニー好きなら、あなたはあなたのUserモデルとパスでsend_batch_invitationsメソッドを作成することによって、例えば、モデルにロジックを移動することができますparams [:user_emails]をそのメソッドの引数としてユーザコントローラから取得します。

  2. 招待状を送信する方法が完了するのに十分な時間がかかることがあるので、このタスクをバックグラウンドジョブプロセッサー(delayed_jobまたはresqueなど)に割り当てることをお勧めします。 これら2つのバックグラウンドジョブプロセッサの使用方法を示すrailscastsがあります。

関連する問題