Ruby on rails 是否有\u secure \u password Bcrypt提供零密码
我正试图跟随Michael Hartl的Ruby on Rail书,我在第10章,试图允许用户编辑他们的配置文件设置,这是最奇怪的错误-bcrypt的密码摘要正在破坏我的测试 users.ymlRuby on rails 是否有\u secure \u password Bcrypt提供零密码,ruby-on-rails,ruby,bcrypt,Ruby On Rails,Ruby,Bcrypt,我正试图跟随Michael Hartl的Ruby on Rail书,我在第10章,试图允许用户编辑他们的配置文件设置,这是最奇怪的错误-bcrypt的密码摘要正在破坏我的测试 users.yml user: name: Example User email: example@gmail.com password_digest: <%= User.digest("password") %> 你知道哪里不对吗 尝试使用下面的代码 user: name: Example
user:
name: Example User
email: example@gmail.com
password_digest: <%= User.digest("password") %>
你知道哪里不对吗 尝试使用下面的代码
user:
name: Example User
email: example@gmail.com
password: "password"
Bcrypt有一个验证,即创建新记录时应存在密码属性访问器(更新记录时可选)
此外,您还应将允许\u blank:true
添加到密码的长度验证
,因为当密码本身为空/nil时,不需要长度验证
user:
name: Example User
email: example@gmail.com
password_digest: <%= User.digest("password") %>
some_user:
name: Some user
email: some_user@example.com
password_digest: <%= BCrypt::Password.create('secret') %>
validates :password, length: { minimum: 6, allow_blank: true }
请注意,您不应该验证的存在
这是因为在表单中,您将要求使用该名称的密码
,而不是密码摘要
(这是保存到DB表中的最后一个字段)
Rails随后将验证“假”或中间密码字段,如果通过,则生成摘要,并将密码字段保留。这就是为什么您必须添加allow\u blank:true
,这样测试才能通过。尝试在yml中提供密码。应该自动创建摘要。尝试过此操作后,我得到ActiveRecord::Fixture::Fixture错误:表“users”没有名为“password”的列
。您的测试代码怎么样?将向问题添加我的测试代码,尽管我能够在consoleOk中复制该问题,因此,我决定在不做测试的情况下继续前进,做一些完全不相关的事情。出于某种莫名其妙的原因——测试本身就解决了问题。虽然这是有道理的,因为我在互联网上发现的任何东西都没有困扰我的代码,但我还是犹豫了,因为这个问题就像它来时一样随机。TL;博士-这个问题没有答案。目前,问题已经解决。
validates :password, length: { minimum: 6, allow_blank: true }