0

私は次の工場を持っています:

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>

User モデルには次のものがあります。

after_create build_player

Factoryによって作成されたプレーヤーを上書きしていると思います。もしそうなら、どうすれば解決できますか??

関係は次のとおりです。

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

3 に答える 3

1

あなたはいつでもできる

factory :user do
    first_name 'Mister'

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

それがあなたのために働くかどうか見てください。

于 2012-07-05T09:19:15.890 に答える
0

ユーザーはプレーヤーを持っている必要はないので(?)、代わりに次のファクトリ定義を持っている必要があります。

factory :user do
    first_name 'Mister'
end

factory :player do
  rating 20
  user
end

プレーヤーを作成すると、useオブジェクトが作成され、新しいプレーヤーオブジェクトがこのユーザーオブジェクトに関連付けられます。

于 2012-07-05T09:09:57.077 に答える
0

これを試して:

FactoryGirl.define do
    factory :user do |u|
        u.first_name 'Mister'
        u.player { |p| p.association(:player) }
    end
end
于 2012-07-03T19:10:18.777 に答える