まず、ユーザーを見つけて、彼が存在するグループに追加することです。彼が存在しない場合は、電子メールで招待状を送信し、その招待状をグループに属している別のテーブルに入れてください。 その後、同じ電子メールアドレスを持つ人がサインアップした場合は、新しいユーザーをグループに直接入れてください。合計:電子メールアドレス行のみを持ち、グループモデルに属する「invited_user」という名前の新しいモデルを追加します。
class InvitedUser < ActiveRecord:Base
belongs_to :group
end
このような招待アクションを作成します。
def invite_user
user = User.find_by_email(params[:email])
group = Group.find(params[:id])
if user
group.users << user
else
send_invite user.email
group.invited_users << user
end
end
そして最後に、あなたが工夫の登録コントローラーをサブクラス化する必要があるので、あなたは無効にすることができます/成功サインアップした後、デフォルトのアクションに追加します。
class RegistrationsController < Devise::RegistrationsController
protected
def def after_sign_up_path_for(resource)
invited_user = InvitedUser.find_by_email(resource.email)
if invited_user
invited_user.group.users << resource
invited_user.destroy
end
after_sign_in_path_for(resource)
end
end
またはそのような何か:私は、部分的工夫のマニュアルに頼ることだし、それを自分自身試していなかったので、この部分は信頼できないかもしれません。もちろんsend_inviteアクションを実装する必要があります。もちろん