我有以下工厂:
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)
答案 0 :(得分:1)
你可以随时
factory :user do
first_name 'Mister'
after_create do |user, evaluator|
user.player = player
end
end
看看它是否适合你。
答案 1 :(得分:0)
试试这个:
FactoryGirl.define do
factory :user do |u|
u.first_name 'Mister'
u.player { |p| p.association(:player) }
end
end
答案 2 :(得分:0)
因为,用户不需要(是?)一个玩家,你应该有这个工厂定义:
factory :user do
first_name 'Mister'
end
factory :player do
rating 20
user
end
创建播放器时,它会创建一个使用对象并将新播放器对象与此用户对象相关联。