2017-04-12 14 views
0

私はユーザーインデックスを持っています。ユーザーが招待状を失ったときのために、クリックするとパスワードリセットの電子メールを送信するボタンを追加したいと思います。Rails 4 + Devise Invitable:パスワードのリセット

# View 
<% @users.each do |user| %> 
    <%= link_to "Reset Password", reset_password_path(user) %> 
<% end %> 

# Controller 
def reset_password 
    @user = User.find(params[:id]) 
    email = @user.email 

    # Fire password reset... 

    redirect_to users_path 
end 

通常工夫は、パスワードリセットのためのフォームを使用していますが、私はメールが知られており、あなたがこのような何かを行うと工夫の既存のメソッドを使用することができます

答えて

2

のparamsで供給することができるので、私はこれをオーバーライドすることができます考え出し、ドキュメントから:https://github.com/plataformatec/devise/wiki/How-To:-Mass-password-reset-and-email-notification

def reset_password 
#Generate random, long password that the user will never know: 
new_password = Devise.friendly_token(length = 50) 

@user = User.find(params[:id]) 
@user.reset_password(new_password, new_password) 

#Send instructions so user can enter a new password: 
@user.send_reset_password_instructions 

redirect_to users_path 
end 
+0

問題は、電子メールを送信した後に私に署名することです。その周りにはとにかくありますか? –

+0

私はそれがこの行のためだと思います。 '@ user.reset_password(new_password、new_password)'。ユーザーのパスワードが変更され、新しいセッションが作成されるためです。あなたはおそらくこの行をスキップして 'send_reset_password_instructions'を使うだけです。私の意見では、これはおそらく管理者の管理パネルを使って行うべきです。 – jdgray

+0

管理者が現在行っている非現在のユーザーのために –

関連する問題