0

私はここで私の工場で少し立ち往生しています、私は友情の工場を持っています

FactoryGirl.define do
  factory :friendship do |f|
    f.association :user
    f.association :friend, :factory => :user

    trait :authorized do
        authorized true
    end

    trait :pending do
        authorized false
    end

  end
end

現在、ユーザーファクトリ内には次のものがあります

factory :valid_user, :parent => :user do |user|
  user.after(:create) { |u| FactoryGirl.create(:usergroup, :user => u) }
  user.after(:create) { |u| FactoryGirl.create(:friendship, :user => u, :authorized => true) }
  user.after(:create) { |u| FactoryGirl.create(:friendship, :friend => u, :authorized => true) }
end

私の問題は、最初の友情の逆の友情を作成するために作成された最初の友情を参照できる方法はありますか(ユーザー=友人、友人=ユーザー?そしてそれ以外に、なぜ私は内部の特性を使用できないのですか?ブロック?:authorized = trueを設定する必要があり、:authorizedだけを使用することはできません。

4

1 に答える 1

0

これを試して:

factory :valid_user, :parent => :user do |user|
  user.after(:create) do |u|
    FactoryGirl.create(:usergroup, :user => u)

    f1 = FactoryGirl.create(:friendship, :user => u, :authorized => true)
    FactoryGirl.create(:friendship, :friend => u, :authorized => true)

    FactoryGirl.create(:friendship, :friend => f1.user, :user => f1.friend)
  end
end

2 番目の部分では、FactoryGirl はキーと値のペアを受け取ります。それがまさにそれがどのように機能するかです。

于 2012-12-17T15:52:17.417 に答える