0

usersと、関係rolesusers_rolesテーブルを備えたアプリがあります。Userモデルとモデルのファクトリーを定義しようとしていますRole:

FactoryGirl.define do
  factory :user do
    name 'Test User'
    email 'example@example.com'
    password 'changeme'
    password_confirmation 'changeme'
    # required if the Devise Confirmable module is used
    # confirmed_at Time.now
  end

    factory :role do 
        name 'user'
    end
end

そして私のテスト

require 'spec_helper'

describe UsersController do

  before (:each) do
    @user = FactoryGirl.create(:user)
    @user.role = FactoryGirl.create(:role)
    sign_in @user
  end

  describe "GET 'show'" do

    it "should be successful" do
      get :show, :id => @user.id
      response.should be_success
    end

    it "should find the right user" do
      get :show, :id => @user.id
      assigns(:user).should == @user
    end

  end

end

モデル

  private
  def default_role
    self.roles << Role.where(:name => 'user').first
  end

rspec を実行すると、エラーが発生しました

Failure/Error: User.create!(@attr)
 ActiveRecord::AssociationTypeMismatch:
   Role(#68298640) expected, got NilClass(#14882680)
 # ./app/models/user.rb:33:in `default_role'
4

1 に答える 1