FactoryGirl has_one和belongs_to没有创建关联

时间:2012-07-03 18:47:01

标签: ruby-on-rails-3 bdd factory-bot

我有以下工厂:

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)

3 个答案:

答案 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

创建播放器时,它会创建一个使用对象并将新播放器对象与此用户对象相关联。