2011-01-11 4 views
7

デフォルトでは、deviseは、サインアップとサインインに電子メールアドレスを使用します。ユーザーのメールアドレスを変更するにはどうすれば "安全に"作成できますか?

しかし、私は電子メールアドレスをユーザーが変更できるようにする必要があります。

ユーザが電子メールアドレスを編集できるようにして、ユーザが「間違った」電子メールアドレスを指定してユーザがサインアウトした後、ユーザがサインアウトした場合、は、電子メールは、ユーザーアカウントにアクセスできなくなりました。

この問題を回避するにはどうすればよいですか? (ユーザーが常にログインできるようにする、変更不可能な別のユーザー名フィールドを作成する場合を除いて)

答えて

12

電子メールを変更すると、ユーザーに再度自分のアカウントを確認させることができます。

一度、該当するユーザーのパスワードを更新した場合は、ユーザーの確認を解除して確認メールを再送信する必要があります。確認メール再送信するには

user = User.find(1) 
if user.confirmed? 
    user.confirmed_at = nil 
    user.save(:validate => false) 
end 

:ユーザーをunconfirmする

user = User.find(1) 
user.send_confirmation_instructions 

は、このヘルプを願っています!

8

Deviseはこれをそのまま使用します。 confirmable module

# If true, requires any email changes to be confirmed (exactly the same way as 
# initial account confirmation) to be applied. Requires additional unconfirmed_email 
# db field (see migrations). Until confirmed new email is stored in 
# unconfirmed email column, and copied to email column on successful confirmation. 
config.reconfirmable = true 

あなたはそれがどのように動作するか表示されることがあります。ここでは初期化子からの情報です。

+0

ほとんどの場合、以前のバージョンのdeviseでは実装されていませんでした(現在のバージョンは3.2.2です)。 – peresleguine

関連する問題