1

但是,当我将 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。

我知道我做错了什么,但是,我很难过。

4

1 回答 1

0

CFUNC:要求

你看 - 这是问题的根源

CFUNC也有类似的问题

很可能,问题不在于代码,而在于 rails(某些部分使用不同版本)或 gems。我建议重新安装您的环境并检查一切是否与教程相对应。

例如,设置 gems 这样的版本很重要,在教程中,即使现在有新版本。

于 2012-03-17T08:08:53.553 回答