我已经完成了Chapter 6 of railstutorial,但在我添加了password & password_confirmation之后不久,我的所有User model specs都开始失败,并出现以下错误:
Failures:
1) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
2) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
3) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
4) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
5) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
6) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
7) User
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
8) User when name is not present
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
9) User when email is not present
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
10) User when name is too long
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
11) User when email format is invalid should be invalid
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
12) User when email format is valid should be valid
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
13) User when email address is already taken
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
14) User when password is not present
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
15) User when password confirmation is nil
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
16) User when password doesn't match confirmation
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
17) User return value of authenticate method with valid password
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
18) User return value of authenticate method with invalid password
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
19) User return value of authenticate method with invalid password
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
20) User with a password that's too short
Failure/Error: @user = User.new(name: "Example User", email: "user@example.com",
ActiveRecord::UnknownAttributeError:
unknown attribute: password
# ./spec/models/user_spec.rb:17:in `new'
# ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'
Finished in 7.43 seconds
39 examples, 20 failures, 5 pending
Failed examples:
rspec ./spec/models/user_spec.rb:22 # User
rspec ./spec/models/user_spec.rb:23 # User
rspec ./spec/models/user_spec.rb:24 # User
rspec ./spec/models/user_spec.rb:25 # User
rspec ./spec/models/user_spec.rb:26 # User
rspec ./spec/models/user_spec.rb:27 # User
rspec ./spec/models/user_spec.rb:28 # User
rspec ./spec/models/user_spec.rb:32 # User when name is not present
rspec ./spec/models/user_spec.rb:37 # User when email is not present
rspec ./spec/models/user_spec.rb:42 # User when name is too long
rspec ./spec/models/user_spec.rb:46 # User when email format is invalid should be invalid
rspec ./spec/models/user_spec.rb:57 # User when email format is valid should be valid
rspec ./spec/models/user_spec.rb:73 # User when email address is already taken
rspec ./spec/models/user_spec.rb:78 # User when password is not present
rspec ./spec/models/user_spec.rb:83 # User when password confirmation is nil
rspec ./spec/models/user_spec.rb:88 # User when password doesn't match confirmation
rspec ./spec/models/user_spec.rb:96 # User return value of authenticate method with valid password
rspec ./spec/models/user_spec.rb:102 # User return value of authenticate method with invalid password
rspec ./spec/models/user_spec.rb:103 # User return value of authenticate method with invalid password
rspec ./spec/models/user_spec.rb:109 # User with a password that's too short
rake aborted!用户模型现在可以在here找到了,我已经将源代码和原版进行了比较,但似乎遗漏了一些东西。不知道它是什么
谁能告诉我为什么会出现这个错误?
发布于 2012-08-27 20:55:10
添加:
attr_accessor :password, :password_confirmation然后,本教程将使您在password_digest中保存摘要
发布于 2012-09-11 02:43:46
如果您还没有这样做,只需将has_secure_password添加到用户模型文件中即可。
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
# ..
end发布于 2015-06-08 01:34:50
我也有同样的问题。我是在Cloud9上做这个的。
我注意到我的测试也没有全部运行。
刷新我的文件树解决了这两个问题。
我不需要将:password或:password_confirmation直接放入模型中(或者根本不需要从教程中进行任何代码更改。
https://stackoverflow.com/questions/12142374
复制相似问题