2012-04-29 43 views
2

我正在通过Michael Hartl的教程(一个很好的教程!),我在第6章6.3节添加安全密码中遇到了一个问题。Ruby on Rails教程:第6.3节 - 未知属性错误

的教程说“添加密码和* password_confirmation *的用户模型...密码属性将虚拟” - 这可能是为什么没有迁移将它们添加到数据库模式。

然而,除非它们被添加到user.rb的attr_accessible行的末尾,我得到一个错误MassAssignmentSecurity,但是当我加入他们,我得到GitHub上的

UnknownAttributeError: 
    unknown attribute: password 

的user.rb代码有属性添加到attr_accessible,但其余的代码(在user_spec.rb中)是相同的,不包括我想在后面的章节中添加的。

我曾经使用过此章了第二次,从头开始,以为这是我的错误,但它仍然存在...

安装宝石

Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.3.2) 
Using activesupport (3.2.3) 
Using builder (3.0.0) 
Using activemodel (3.2.3) 
Using erubis (2.7.0) 
Using journey (1.0.3) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.3) 
Using actionpack (3.2.3) 
Using mime-types (1.18) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.4) 
Using actionmailer (3.2.3) 
Using arel (3.0.2) 
Using tzinfo (0.3.33) 
Using activerecord (3.2.3) 
Using activeresource (3.2.3) 
Using addressable (2.2.7) 
Using annotate (2.4.1.beta1) 
Using bcrypt-ruby (3.0.1) 
Using bootstrap-sass (2.0.0) 
Using nokogiri (1.5.2) 
Using ffi (1.0.11) 
Using childprocess (0.3.2) 
Using libwebsocket (0.1.3) 
Using rubyzip (0.9.8) 
Using selenium-webdriver (2.21.2) 
Using xpath (0.1.4) 
Using capybara (1.1.2) 
Using coffee-script-source (1.3.1) 
Using execjs (1.3.1) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.7.0) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.3) 
Using coffee-rails (3.2.2) 
Using diff-lcs (1.1.3) 
Using guard (1.0.1) 
Using guard-rspec (0.5.5) 
Using spork (0.9.0) 
Using guard-spork (0.3.2) 
Using jquery-rails (2.0.0) 
Using libnotify (0.5.9) 
Using bundler (1.1.3) 
Using rails (3.2.3) 
Using rb-inotify (0.8.8) 
Using rspec-core (2.9.0) 
Using rspec-expectations (2.9.1) 
Using rspec-mocks (2.9.0) 
Using rspec (2.9.0) 
Using rspec-rails (2.9.0) 
Using sass (3.1.16) 
Using sass-rails (3.2.5) 
Using sqlite3 (1.3.5) 
Using uglifier (1.2.3) 

感谢任何帮助或指针我的下一个步骤,

克里斯

回答

1

您可以像这样在模型中定义的虚拟属性:

attr_accessor :password, :password_confirmation 
0

根据你所在的6.3的哪个子部分,测试可能失败。他们应该首先失败,然后通过添加代码开始“修复”他们。在6.3.4,你修复

2

以下教程时,我遇到了同样的问题,后来我发现我忘了添加一个调用has_secure_passwordattr_accessible下面你通过添加has_secure_password到user.rb描述该问题致电app/models/user.rb

class User < ActiveRecord::Base 
    attr_accessible :email, :name, :password, :password_confirmation 
    has_secure_password 
    // rest of the code 
end 

UnknownAttributeError已经不存在了,我做完之后所有测试都通过了。

0

与密码和password_confirmaton

class User < ActiveRecord::Base 
    attr_accessible :name, :email, :password, :password_confirmation 
    has_secure_password 
    . 
    . 
    . 
end 
访问属性修改user.rb文件后

不要忘记保存它!