title: FactoryGirl: `block (3 levels) in <top (required)>': undefined local variable or method `user'
body: <p>I keep getting the error that <code>user</code> is not defined even thought i do <code>let(:user) { FactoryGirl.create(:user) }</code>. How do I fix this?</p>
  
  <p>I tried doing dropped, recreated, migrated database and did <code>rake db:test:prepare</code>.</p>
  
  <p>I also tried restarting server.</p>
  
  <p>None of those tricks worked out.</p>
  
  <p>forums_spec.rb</p>
  
  
  
  <pre><code>require 'spec_helper'
  
  describe "Forums" do
  
    subject { page }
  
    shared_examples_for 'All signed off pages' do
      describe 'should have logo' do
        it { should have_selector('#logo', text: 'Minforum')}
      end
  
      describe 'should have navigation header' do
        it { should have_selector('.nav.pull-right li', text: 'Sign in') }
        it { should have_selector('.nav.pull-right li', text: 'Register') }
      end
  
      describe 'should have footer links' do
        it { should have_link('About', href: about_path) }
        it { should have_link('Code', href: 'https://github.com/serv/minforum') }
        it { should have_link('Privacy Policy', href: privacy_path) }
      end
    end
  
    shared_examples_for 'All pages' do
      it { should have_selector('h1', text: heading) }
      it { should have_selector('title', text: full_title(title)) }
    end
  
    describe 'index page' do
      before { visit root_path }
      let(:title) {''}
      let(:heading) {'Forums'}
  
      describe 'should have large intro display' do
        it { should have_selector('.intro h1', text: 'Minforum') }
        it { should have_selector('.intro p', text: 'Simple forum software written with Ruby on Rails') }
        it { should have_link('View project on GitHub', href: 'https://github.com/serv/minforum') }
      end
  
      describe 'should have valid table headings' do
        it { should have_selector('table thead tr th', text: '') }
        it { should have_selector('table thead tr th', text: 'Topics') }
        it { should have_selector('table thead tr th', text: 'Posts') }
        it { should have_selector('table thead tr th', text: 'Views') }
      end
  
      it_should_behave_like 'All pages'
      it_should_behave_like 'All signed off pages'
    end
  
    describe 'new page' do
      describe 'should not let visitors in' do
        before { visit new_forum_path }
        it { should have_selector('.alert.alert-notice', text:'You do not have permission to do that.') }
      end
  
      describe 'should not let nonadmin users in' do
        let(:user) { FactoryGirl.create(:user) }
        sign_in user
        visit new_forum_path
  
        it { should have_selector('.alert.alert-notice', text:'You do not have permission to do that.') }
        user.delete
      end
    end
  end
  </code></pre>
  
  <p>factories.rb</p>
  
  <pre><code>FactoryGirl.define do
    factory :user do
      sequence(:name)  { |n| "Person#{n}" }
      sequence(:email) { |n| "person_#{n}@example.com"}   
      password "foobar"
      password_confirmation "foobar"
      bio 'This is a bio.'
  
      factory :admin do
        admin true
      end
  
      factory :mod do
        mod true
      end
    end
  
    factory :forum do
      name 'Jason Forum1'
      description 'The factory_girl gem is used to create default model objects for tests. For example, if a controller action requires finding a User object before displaying...'
      user
    end
  
    factory :topic do
      name 'The application generator template will ask you for your preferences'
      views 10
      forum_id 1
      last_post_id 10
    end
  end
  </code></pre>
  
  <p>sign_in method</p>
  
  <pre><code>def sign_in(user)
    visit signin_path
    fill_in "Email",    with: user.email
    fill_in "Password", with: user.password
    click_button "Sign in"
    # Sign in when not using Capybara as well.
    cookies[:remember_token] = user.remember_token
  end
  </code></pre>
  
  <p>error</p>
  
  <pre><code>Jasons-MacBook-Pro:minforum jasonkim$ bundle exec rspec spec/requests/forums_spec.rb 
  /Users/jasonkim/rails/minforum/spec/requests/forums_spec.rb:59:in `block (3 levels) in &lt;top (required)&gt;': undefined local variable or method `user' for #&lt;Class:0x007f95e7e64130&gt; (NameError)
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `module_eval'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `subclass'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:187:in `describe'
      from /Users/jasonkim/rails/minforum/spec/requests/forums_spec.rb:57:in `block (2 levels) in &lt;top (required)&gt;'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `module_eval'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `subclass'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:187:in `describe'
      from /Users/jasonkim/rails/minforum/spec/requests/forums_spec.rb:51:in `block in &lt;top (required)&gt;'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `module_eval'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:201:in `subclass'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/example_group.rb:187:in `describe'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/dsl.rb:18:in `describe'
      from /Users/jasonkim/rails/minforum/spec/requests/forums_spec.rb:3:in `&lt;top (required)&gt;'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `load'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `block in load_spec_files'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `map'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/configuration.rb:698:in `load_spec_files'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/command_line.rb:22:in `run'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:80:in `run_in_process'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:69:in `run'
      from /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.8.0/lib/rspec/core/runner.rb:10:in `block in autorun'
  </code></pre>
  
  <p>new error after changing the answer to awendt</p>
  
  <pre><code>Jasons-MacBook-Pro:minforum jasonkim$ bundle exec rspec spec/requests/forums_spec.rb
  ................F
  
  Failures:
  
    1) Forums new page should not let nonadmin users in 
       Failure/Error: sign_in user
       NoMethodError:
         undefined method `forums' for nil:NilClass
       # ./app/controllers/users_controller.rb:8:in `show'
       # (eval):2:in `click_button'
       # ./spec/support/utilities.rb:22:in `sign_in'
       # ./spec/requests/forums_spec.rb:60:in `block (4 levels) in &lt;top (required)&gt;'
  
  Finished in 0.74504 seconds
  17 examples, 1 failure
  
  Failed examples:
  
  rspec ./spec/requests/forums_spec.rb:65 # Forums new page should not let nonadmin users in 
  </code></pre>