2012-07-03 194 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 

當您創建一個播放器時,它將創建一個使用對象並將新播放器對象與這個用戶對象。

相關問題