在控制台中创建的设计用户无法登录

时间:2013-09-30 01:39:07

标签: ruby-on-rails ruby-on-rails-3.2 devise

我试图在设计中关闭#registerable,只是通过控制台和种子数据注册用户,但是我遇到登录问题。

  1. 我通过控制台创建了一个用户:User.create!(email:'example@example.com',密码:'密码',用户名:'用户名')
  2. 它通过验证并保存到数据库
  3. 当我提供电子邮件时,我无法使用此用户登录(通过网站表单):user@example.com和密码:密码
  4. 这是密码,但在控制台中:

    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
    
  5. 我尝试了多个用户,并尝试使用db / seed.rb创建它。它再次进入数据库,一切都很好。它只是不会登录。我也尝试使用匹配的密码添加password_confirmation字段,没有骰子。

    如果我打开:在用户模型中注册,转到注册页面,注册用户,我可以使用该用户登录(通过表单创建)。

    我唯一的想法是加密密码的生成方式存在某种差异?但这并不成立,因为我可以在网络创建的用户上运行相同的find_by_email / valid_password检查。

    非常感谢任何帮助?

    修改

    我没有使用Confirmable,这是我的Devise属性:

         devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatablen
    

    EDIT2 现在我无法使用我的网站创建帐户登录。我需要做更多的调试。

2 个答案:

答案 0 :(得分:3)

假设您正在使用Confirmable,请使用以下命令创建用户:

User.create!(email: 'example@example.com', password: 'password', username: 'username', confirmed_at: Time.now)

否则,设计将等待用户确认其永远不会发生的电子邮件地址

答案 1 :(得分:2)

我解决了这个问题。我在设计初始化程序中进行了错误配置。我误读了config.authentication_keys行并认为它是/或键,而不是所有键。如果另一个人通过谷歌发现这个,我建议返回自动生成的初始化程序或git roll回到它。我不认为这与用户创建的差异或设备的可注册模块有任何关系。