既存のユーザー (ID:1367) がこの URL を友人に招待状として送信できると仮定します。
http://example.com/users/sign_up?invitation=1367
次に、Users テーブルには という非表示の列がありますinvitation
。
そして、これは私が望む仕組みです。
彼の友人はサインアップするために情報を入力しました。
送信ボタンを押すと、隠しフィールド「招待状」もフォームに送信されます。
1367
レコードの「招待状」という欄に設定されます。彼は確認メールを受け取り、リンクをクリックしたら、このトランザクションを追加して、彼のアカウントに対して 1 回だけ実行したいと考えています。
もちろん、既存のユーザーが再アクティブ化を試みたときにこれを実行するべきではありません。
新規ユーザーの初回確認のみ。
コード
@user = User.find_by_invitation(current_user.invitation)
@user.friends = @user.friends + 1
@user.save
Devise に追加のトランザクションを追加するのに役立つ登録コントローラーが既にあります。
この手順をアプリに実装する方法を知りたいと思います。
それはこのようなものであるべきですか?
registrations_controller.rb
def after_????????
if @user = User.find_by_invitation(current_user.invitation)
@user.friends = @user.friends + 1
@user.save
end
end