ruby-on-rails – rails 4 has_secure_password渲染密码确认可选
发布时间:2020-12-17 01:20:30 所属栏目:百科 来源:网络整理
导读:使用rails 4我在我的用户模型中使用has_secure_password,技巧说如果我没有设置:password_confirmation它将永远不会被触发,但为什么当我运行测试时我得到错误:密码确认不能为空如下: Failures:1) User Failure/Error: it { should be_valid } expected #Us
使用rails 4我在我的用户模型中使用has_secure_password,技巧说如果我没有设置:password_confirmation它将永远不会被触发,但为什么当我运行测试时我得到错误:密码确认不能为空如下:
Failures: 1) User Failure/Error: it { should be_valid } expected #<User id: nil,name: "joe",email: "joe@mail.com",created_at: nil,updated_at: nil,password_digest: "$2a$04$mcRr/msgYQR3kBVc3kv/m.UotBJuJuSXZKMw /eHTvU87..."> to be valid,but got errors: Password confirmation can't be blank 我的测试文件看起来像: require 'spec_helper' describe User do before { @user = User.new(name: 'joe',email: 'joe@mail.com',password: 'foo') } subject { @user } #.... #.... describe "when password is not present" do before { @user.password = "" } it { should_not be_valid } end end 为什么我得到这个错误,有一个解决方案呢?谢谢 解决方法
在测试之前将测试更改为:
before { @user = User.new( name: 'joe',password: 'foo',password_confirmation: 'foo') #<== this line! } 那应该解决它. 这是关于: 您知道在几乎任何网站上创建新帐户时,他们会要求您输入密码并输入两次吗?这就是这个.当您创建新用户时,has_secure_password需要两次密码以确保您没有输入错误. 如果密码!= password_confirmation,它将抛出异常并且不会创建用户. 同样,这仅用于用户创建.您无需在登录表单或其他任何内容中输入两个密码.您不必将此字段添加到模型或数据库中. 如果您有一个用户创建表单,并且您不想拥有password_confirmation字段,那么您不必这样做.在调用save之前,您可以在控制器中设置password_confirmation = password. 但是对于用户创建,必须存在password_confirmation. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |