我正在通过迈克尔·哈特尔的教程(一本优秀的教程!)工作,我在第6章第6.3节添加安全密码中遇到了障碍。
教程说“将密码和* password_confirmation *添加到用户模型......密码属性将虚拟” - 这可能就是为什么没有迁移以将它们添加到数据库模式。
但是,除非将它们添加到user.rb中attr_accessible行的末尾,否则会收到MassAssignmentSecurity错误,但是当我添加它们时,我得到了
UnknownAttributeError:
unknown attribute: password
github上的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)
感谢您对我的下一步的任何帮助或指示,
克里斯
答案 0 :(得分:2)
我在遵循教程时遇到了同样的问题,然后我发现忘记在has_secure_password
attr_accessible
来电app/models/user.rb
下方添加了class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
// rest of the code
end
来电。
UnknownAttributeError
{{1}}已经消失,所有测试都在我完成后通过。
答案 1 :(得分:1)
您可以在模型中定义虚拟属性,如下所示:
attr_accessor :password, :password_confirmation
答案 2 :(得分:0)
根据您所在的6.3的子部分,测试可能会失败。他们应该首先失败,然后通过添加代码开始“修复”它们。在6.3.4中,您通过将has_secure_password
添加到user.rb
答案 3 :(得分:0)
修改user.rb文件后,其属性可访问password和password_confirmaton
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
.
.
.
end
别忘了保存它!