Failure/Error: it { should respond_to(:password) } expected #<User id: nil, name: "Example User", e

本文针对Rails教程中的一个常见错误进行了解析与修正。主要介绍了如何正确地定义User模型中的密码属性,并探讨了attr_accessor与has_secure_password之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Failure/Error: it { should respond_to(:password) }

 expected #<User id: nil, name: "Example User", email: "user@example.com", created_at: nil, updated_at: nil, password_digest: nil> to respond to :password



Failure/Error: it { should respond_to(:password_confirmation) }

 expected #<User id: nil, name: "Example User", email: "user@example.com", created_at: nil, updated_at: nil, password_digest: nil> to respond to :password_confirmation


在学习railstutorial的时候跟着书中步骤出现了这个错误,后来发现是user中没有定义成员变量password和password_confirmation,书中给出的是

 attr_accessible :name, :email, :password, :password_confirmation

但是这样并不可以定义,需要添加

attr_accessor :password, :password_confirmation


但是当看到后面的时候,当在user类定义中加入has_secure_password以后,却需要将添加的attr_accessor :password, :password_confirmation去掉,

以为在https://github.com/rails/rails/blob/master/activemodel/lib/active_model/secure_password.rb?version=3.2#这段has_secure_password的源代码中已经做了相关处理,具体的看代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值