title: Chapter 8 Rails Tutorial Remember Token Errors
body: <p>This chapter is on adding remember tokens to ensure that the user signin status is remembered and that the session is only cleared when the user explicitly signs out. I understand the importance of having this feature in my app, so want to make sure that it works correctly. I'm getting a bunch of errors though, when I run </p>
  
  <pre><code>$ bundle exec rspec spec/
  </code></pre>
  
  <p>and I suspect they have to do with my user model, as they all but one contain:</p>
  
  <pre><code>NoMethodError:
         undefined method `remember_token=' for #&lt;User:...&gt;
  </code></pre>
  
  <p>and the last contains</p>
  
  <pre><code>Failure/Error: it { should respond_to(:remember_token) }
  </code></pre>
  
  <p>and then point to my user_spec.rb, user.rb, and and authentication_pages_spec.rb files, which I have included most of (the pertinent parts) here.</p>
  
  <p>user.rb:</p>
  
  <pre><code># == Schema Information
  #
  # Table name: users
  #
  #  id         :integer         not null, primary key
  #  name       :string(255)
  #  email      :string(255)
  #  created_at :datetime        not null
  #  updated_at :datetime        not null
  #
  
  class User &lt; ActiveRecord::Base
    attr_accessible :name, :email, :password, :password_confirmation
    has_secure_password
  
    before_save { |user| user.email = email.downcase }
    before_save :create_remember_token
  
    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 },
                      uniqueness: { case_sensitive: false }
    validates :password, length: { minimum: 6 }
    validates :password_confirmation, presence: true
  
    private
  
        def create_remember_token
          self.remember_token = SecureRandom.urlsafe_base64
        end
  end
  </code></pre>
  
  <p>authentication_pages_spec.rb:</p>
  
  <pre><code>require 'spec_helper'
  
  describe "Authentication" do
  
    subject {page}
    describe "signin page" do
      before { visit signin_path }
      it {should have_selector('h1', text: 'Sign in')}
      it {should have_selector('title', text: 'Sign in')}
    end
  
    describe "signin" do
      before {visit signin_path}
  
      describe "with invalid information" do
        before {click_button "Sign in"}
  
        it {should have_selector('title', text: 'Sign in')}
        it {should have_selector('div.alert.alert-error', text: 'Invalid')}
  
        describe "after visiting another page" do
                before { click_link "Home" }
                it { should_not have_selector('div.alert.alert-error') }
              end
      end
  
      describe "with valid information" do
            let(:user) { FactoryGirl.create(:user) }
            before do
              fill_in "Email",    with: user.email
              fill_in "Password", with: user.password
              click_button "Sign in"
            end
  
            it { should have_selector('title', text: user.name) }
            it { should have_link('Profile', href: user_path(user)) }
            it { should have_link('Sign out', href: signout_path) }
            it { should_not have_link('Sign in', href: signin_path) }
            end
    end
  end
  </code></pre>
  
  <p>and the beginning of user_spec.rb:</p>
  
  <pre><code># == Schema Information
  #
  # Table name: users
  #
  #  id         :integer         not null, primary key
  #  name       :string(255)
  #  email      :string(255)
  #  created_at :datetime        not null
  #  updated_at :datetime        not null
  #
  
  require 'spec_helper'
  
  describe User do
  
    before do
        @user = User.new(name: "Example User", email: "user@example.com", 
                         password: "foobar", password_confirmation: "foobar")
    end
  
    subject { @user }
  
    it { should respond_to(:name) }
    it { should respond_to(:email) }
    it { should be_valid }
    it { should respond_to(:password_digest) }
    it { should respond_to(:password) }
    it { should respond_to(:password_confirmation) }
    it { should respond_to(:authenticate) }
    it { should respond_to(:remember_token) }
  
    describe "remember token" do
        before { @user.save }
        its(:remember_token) { should_not be_blank }
      end
  .
  .
  .
  </code></pre>
  
  <p>Any help would be much appreciated!</p>