I'm going through the tutorial on http://ruby.railstutorial.org/ by Michael Hartl.
I'm on chapter six specifically code listing 6.27 which looks like this:
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]",
password: "foobar", password_confirmation: "foobar")
end
subject { @user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should respond_to(:password_digest) }
it { should respond_to(:password) }
it { should respond_to(:password_confirmation) }
it { should be_valid }
end
Now the User object looks like this:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
before_save { |user| user.email = email.downcase }
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 }, uniquenes
{case_sensitive: false}
end
The User object has six attributes: id, name, email, created_at, updated_at, password_digest. The password_digest is where the hashed password is stored. But as you can see the fields password and password_confirmation are not in the database. Only password_digest is. The author claims we don't need to store them in a database but only create them temporarily in memory. But when i run the code from the rspec test:
@user = User.new(name: "Example User", email: "[email protected]",
password: "foobar", password_confirmation: "foobar")
I get an error telling me fields password and password_confirmation are undefined. How do I get around this?
mike