我正在尝试在设计中关闭#registerable,并仅通过控制台和种子数据注册用户,但是我在登录时遇到问题。
- 我通过控制台创建了一个用户:User.create!(电子邮件:'example@example.com',密码:'password',用户名:'username')
- 它通过验证并保存到数据库中
- 当我提供电子邮件:user@example.com 和密码:password 时,我无法使用此用户登录(通过网站表单)
这是密码,但在控制台中:
u = User.find_by_email('example@example.com') u => #<User id: 6, email: "example@example.com", encrypted_password: "$2a$10$xd0PMJ.qDDu6VtFd6i2EM.bQ0h1rvODyzaqFdzo3Uo4C...", username: "user", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2013-09-30 01:25:16", updated_at: "2013-09-30 01:25:16"> u.valid_password? 'password' => true
我尝试了多个用户,并尝试使用 db/seed.rb 创建它。同样,它确实进入了数据库,一切看起来都很好。它只是不会登录。我还尝试使用匹配的密码添加 password_confirmation 字段,没有骰子。
如果我在用户模型中打开 :registerable ,转到注册页面,注册一个用户,我可以使用该用户登录(通过表单创建)。
我唯一的想法是加密密码的生成方式存在某种差异?但这不成立,因为我可以对网络创建的用户运行相同的 find_by_email/valid_password 检查。
任何帮助将不胜感激?
编辑:
我没有使用 Confirmable,这是我的设计属性:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatablen
Edit2 现在我无法使用我的网络创建帐户登录。我需要做更多的调试。