我正在尝试在我的应用程序中设置电子邮件验证过程,并且我生成一个令牌就好了,并在用户注册时向他们发送电子邮件。但是当我点击验证链接时,'users_controller/confirm' 操作中的 if 和 else 语句都会被执行。我被重定向到 root_path 但用户记录中的两个字段被修改。当我从 rails 控制台运行 find_by_token 时,它会返回预期的用户。我正在使用 mysql 并且想知道查询中是否存在某种延迟会导致两者都执行。
def confirm
if User.find_by_token(params[:token]).nil?
redirect_to root_path
else
@user = User.find_by_token(params[:token])
cookies[:auth_token] = @user.auth_token
User.skip_callbacks = true
@user.update_attribute(:token, "")
@user.update_attribute(:confirmed, 1)
User.skip_callbacks = false
reset_session
redirect_to routes_path
end
end