【发布时间】:2011-01-01 22:00:28
【问题描述】:
我无法理解我在下面的网络上找到的密码重置代码的应用逻辑。
- 用户收到一封电子邮件,其中包含 链接一些重置代码。
- 点击后,他们转到 下面的操作称为重置
- 用户在数据库中被找到 引用重置代码。
- 显示更改密码的表格 用户输入新密码 在。
这是我感到困惑的地方。
- 提交表单后,再次调用操作。
- 这次参数中将没有重置代码,因此不会找到用户@user = nil
- 这次是发布请求,因此我们输入了该部分逻辑。
我的问题是 - 如果@user = nil if @user.update_attributes(:password => params[:user][:password], :password_confirmation => params[:user][:password_confirmation])
# app/controllers/users_controller.rb
def reset
@user = User.find_by_reset_code(params[:reset_code]) unless params[:reset_code].nil?
if request.post?
if @user.update_attributes(:password => params[:user][:password], :password_confirmation => params[:user][:password_confirmation])
self.current_user = @user
@user.delete_reset_code
flash[:notice] = "Password reset successfully for #{@user.email}"
redirect_to root_url
else
render :action => :reset
end
end
end
<!-- app/views/users/reset.html.erb -->
<%= error_messages_for :user %>
<% form_for :user do |f| -%>
<p>
Pick a new password for <span><%= @user.email %></span>
</p>
<p>
<label for="password">Password</label><br />
<%= f.password_field :password %>
</p>
<p>
<label for="password">Confirm Password</label><br />
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= submit_tag 'Reset' %>
</p>
<% end -%>
【问题讨论】:
标签: ruby-on-rails forms