2017-04-12 72 views
0

我有一个用户索引,我想添加一个按钮,当我点击它时(用户失去邀请时)会发送密码重置电子邮件。Rails 4 +设计可以邀请:重置密码

# 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 

通常设计用来重置密码形式,但我想既然电子邮件是已知的,可以在PARAMS提供

回答

2

你可以做这样的事情,并使用设计的现有方法我可以覆盖此,来自文件: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

它是由管理员完成的,因为非当前用户 –