2012-07-03 155 views
0

我有以下工厂:FactoryGirl HAS_ONE和belongs_to的不创建关联

factory :user do 
    first_name 'Mister' 
    player 
end 

factory :player do 
    rating 20 
end 

当我创建这样一个用户:

@user = FactoryGirl.create(:user) 

而且我做的:

puts @user.player.inspect 

我得到:

#<Player id: nil, rating:nil, user_id: 44> 

用户模型中,我有以下:

after_create build_player 

我认为这是由覆盖在工厂创建的播放器。如果是这样,我该如何解决?

注意的关系是:

User has_one Player 
Player belongs_to User (foreign key user_id in Player table) 

回答

1

你总是可以做

factory :user do 
    first_name 'Mister' 

    after_create do |user, evaluator| 
     user.player = player 
    end 
end 

看看是否能为你工作。

0

试试这个:

FactoryGirl.define do 
    factory :user do |u| 
     u.first_name 'Mister' 
     u.player { |p| p.association(:player) } 
    end 
end 
+0

我一直有同样的问题...在我的用户模型中,我有这个:after_create:build_player,如果我摆脱了这一点,工厂按预期工作。但我需要在我的模型中... –

0

,因为用户并不需要有(是什么?)的球员,你应该有这个工厂的定义改为:

factory :user do 
    first_name 'Mister' 
end 

factory :player do 
    rating 20 
    user 
end 

当您创建一个播放器时,它将创建一个使用对象并将新播放器对象与这个用户对象。

相关问题