私はrails3アプリケーションに取り組んでいます。私のアプリケーションでは、ユーザーが初めて登録したときに、確認リンクを含む電子メールがユーザーに送信されました。そのリンクをクリックした後、status_id を更新し、ユーザーをログイン ページにリダイレクトします。これが私のコードです:
トークン生成のコード:
require 'digest/sha2'
class Subscription < ActiveRecord::Base
validate :ids_must_be_present, :on => :create
def ids_must_be_present
if status_id==0
generate_token
else
errors.add('Something gone wrong')
end
end
def generate_token
self.token = encrypt_string(id, generate_salt)
end
def encrypt_string(id, salt)
Digest::SHA2.hexdigest(id.to_s + "prftnxt" + salt)
end
private
def generate_salt
self.object_id.to_s + rand.to_s + company_id.to_s + Time.now.to_i.to_s
end
end
リンク付きのメールを送信するコード:
def email_verify
if subscription = Subscription.find_by_id_and_token(params[:id], params[:token])
subscription.update_attribute(:status_id, 1)
redirect_to("/login/index", :notice => "Thanks, email successfully verified")
else
flash.now[:notice] = "Your email has not verified yet. Please verify your email by clicking the link we have sent you."
end
end
確認リンク付きの電子メール テンプレート:
Hello <b><%= @user.username %></b>,
<br/>
<br/>
Thank you for signing up .
<b> Please Verify your email</b>
<%= link_to "verify", "http://localhost:3000/login/email_verify?token=#{@subscription.token}&id=#{@subscription.id}"%>
</br></br>
</br>
これですべて問題ありません。ユーザーが確認メールを受け取っていない場合、クライアントは確認メールの再送信を要求するオプションまたはリンクを提供します。
ログイン試行時にフラッシュメッセージを表示して、電子メールをリクエストするためのリンクを表示することを考えています。しかし、私はこれをどのように行うべきか混乱しています.