我有一个新的应用程序,根用户创建另一个用户,当我用模型创建用户。Devise Rails密码
@user = User.new(:email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
@user.save!
的用户节省了“正确”关于“encrypted_password”的价值和其他领域的表格也一样,但是当我尝试登录我有一个错误 “无效的电子邮件或密码”所以,当我阅读记录密码是。
encrypted_password: $2a$11$wFnpiA.l9HezNXfnAGkttuu2IGIXByETytLrEkdDsa8sBFrc8Bdmq
但我用另一个密码的实际工作的根密码。 但在表:
encrypted_password: $2a$11$VKOAUk5pjILU1QHYmkpJSem9KKm70QJPS7Oj.nPM/pTuyu1tqZaQO
所以,我的色器件模型不保存密码的正确的加密。
我的TestController:
class UsersController < ApplicationController
before_action :authenticate_user!
def index
@Users = User.all
end
def create
begin
@user = User.new(:email => params[:email], :password => params[:password_first], :password_confirmation => params[:password_confirmation])
@user.save!
flash[:notice] = "Usuario creado correctamente"
redirect_to action: 'index'
rescue Exception => e
flash[:alert] = "Error al crear al Usuario: " + e.message
redirect_to action: 'index'
end
end
end
我到底做错了什么?
问候
绝不要做'rescue Exception => e'这是一个非常糟糕的做法,它会吞噬基本的错误,例如'NoMethodError'和语法错误,并且使调试变得非常困难。使用'if @user。保存“,如果为false则渲染新视图,以便用户可以更正任何验证错误。不应将救援用于正常的控制流程。 – max
嗨,我只是想弄清楚这一点。 我的用户有这个通:123 和餐桌上的密码: $ 2A $ $ 11 VKOAUk5pjILU1QHYmkpJSem9KKm70QJPS7Oj.nPM/pTuyu1tqZaQO 但是,当我在模型上创建一个新用户的密码更改为: $ 2A $ $ 11 drZIcAsXTHxyvtbvL3Wg5e0EPG4JJpsAlmxe78ohEjDSA3/nCzHoa 这就是我的问题,为什么该模型不使用Devise的加密。 – UlyssesMarx
好吧'救援例外=> e'除了清除垫子上的错误之外什么都不做。 – max