Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否有\u secure \u password Bcrypt提供零密码_Ruby On Rails_Ruby_Bcrypt - Fatal编程技术网

Ruby on rails 是否有\u secure \u password Bcrypt提供零密码

Ruby 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

我正试图跟随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
  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 }