Ruby on rails 拥有\u安全\u密码,不会创建属性

Ruby on rails 拥有\u安全\u密码,不会创建属性,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试在我的Rails应用程序上使用has_secure_password和bcrypt(3.1.11) 以下是我在Ubuntu上的设置: 我安装了bcrypt,没有任何问题,并将其保存在我的gem文件中 我有一个密码\u digest:string供我在数据库中迁移的用户使用 我在我的用户模型中添加了has\u secure\u password 我没有收到任何错误,但是当我去创建一个用户时,它要求我输入一个password\u digest属性,而不是password和password\

我正在尝试在我的Rails应用程序上使用
has_secure_password
和bcrypt(3.1.11)

以下是我在Ubuntu上的设置:

  • 我安装了bcrypt,没有任何问题,并将其保存在我的gem文件中
  • 我有一个
    密码\u digest:string
    供我在数据库中迁移的用户使用
  • 我在我的用户模型中添加了
    has\u secure\u password
  • 我没有收到任何错误,但是当我去创建一个用户时,它要求我输入一个
    password\u digest
    属性,而不是
    password
    password\u confirmation


    为什么会这样?
    是否应该具有安全密码
    自动将用户更改为需要
    密码
    密码确认
    ,而不是
    密码摘要

    不,您不存储
    密码
    密码确认
    ,只存储
    密码摘要
    。您永远不想在数据库中存储纯文本密码

    当您创建一个新用户时,您需要

    User.create(password: 'something', password_confirmation: 'something', ..other fields..)
    
    然后,
    has\u secure\u password
    负责更新数据库中的
    password\u digest

    用户
    模型中包含一些验证也是一个很好的规则

    validates :password_confirmation, presence: true, on: :create
    validates :password, confirmation: true
    
    另外,别忘了在控制器中列出它们

    def user_params
      params.require(:user).permit(:password, :password_confirmation)
    end
    
    User.create(user_params)
    

    您可能需要手动更改表单和/或
    create
    模板,以包含
    password\u confirmation
    字段。请更仔细地查看has\u secure\u password docs maybe?

    谢谢您的回答,这澄清了问题。