gpt4 book ai didi

ruby-on-rails-3 - Rails 3.1.1 has_secure_password 摘要不能为空

转载 作者:行者123 更新时间:2023-12-03 00:51:57 25 4
gpt4 key购买 nike

我一直在使用 has_secure_password 并遇到了问题。我对 UsersController 中的创建操作的测试没有 working 通过。所以我开始在控制台中进行操作,并意识到密码没有被转换为 has 并保存在password_digest 字段中。

当我尝试从控制台创建用户时,会发生以下情况。

irb(main):031:0> u = User.new(:email => "test1@test.com", :password => "test", :password_confirmation => "test")
=> #<User id: nil, email: "test1@test.com", password_digest: nil, created_at: nil, updated_at: nil>
irb(main):032:0> u.save
=> false
irb(main):033:0> u.errors
=> #<ActiveModel::Errors:0x00000100cde500 @base=#<User id: nil, email: "test1@test.com", password_digest: nil, created_at: nil, updated_at: nil>, @messages={:password_digest=>["can't be blank"]}>

我不知道我做错了什么。看起来password_digest 属性永远不会被分配。如果我创建一个没有属性的用户对象并单独分配每个属性,我会得到相同的错误。

这是我的模型

class User < ActiveRecord::Base
has_secure_password
attr_accessible :email, :password, :password_confirmation
end

感谢您提前提供的帮助。

亚历克斯·谢诺伊

最佳答案

我也有同样的症状,一条消息说password_digest不能为空。我遇到的问题是我在 user.rb 中设置了这个:

  attr_accessor :password

这阻止了方法password=被调用(参见secure_password.rb)

  # Encrypts the password into the password_digest attribute.
def password=(unencrypted_password)
@password = unencrypted_password
unless unencrypted_password.blank?
self.password_digest = BCrypt::Password.create(unencrypted_password)
end
end

因此从未为password_digest设置该值。

对我来说,修复方法是删除 attr_accessor 行。

关于ruby-on-rails-3 - Rails 3.1.1 has_secure_password 摘要不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com