I have finished Chapter 6 of railstutorial but all my User model specs have started failing soon after I added password
& password_confirmation
with the following errors:
Failures:
1) User
Failure/Error: @user = User.new(name: "Example User", email: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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: "[email protected]",
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!
The User Model can be found here Now, I have already compared the source to original but it seems I am missing something. Don't what it is
Can anyone tell me why this error is coming?
Just add has_secure_password
into User model file if you haven't done this yet.
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
# ..
end