但是,当我将 has_secure_password 添加到我的用户模型时,我遵循了非常棒的指南:class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation has_secure_password
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6 }
validates :password_confirmation, presence: true
end
然后尝试通过 rails 控制台添加用户:
1.9.3-p125 :001 > User.create(name: "Michael Hartl", email: "mhartl@example.com",
1.9.3-p125 :002 > password: "foobar", password_confirmation: "foobar")
我收到一条很长的错误消息,开头为:
/Users/username/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle: [BUG] Segmentation fault ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
-- Control frame information -----------------------------------------------
c:0058 p:-17575139500290 s:0220 b:0220 l:000219 d:000219 TOP
c:0057 p:---- s:0218 b:0218 l:000217 d:000217 CFUNC :require
并继续进行更多行...
如果我从 user.rb 中取出“has_secure_password”并尝试创建与上面相同的用户,我会收到以下错误:
ActiveRecord::UnknownAttributeError: unknown attribute: password
最后,如果我在模型中插入“attr_accessor :password, :password_confirmation”,我可以成功添加用户,但是,password_digest 为 nil。
我知道我做错了什么,但是,我很难过。