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

对于第二部分,FactoryGirl 采用键值对。这就是它的工作原理。

于 2012-12-17T15:52:17.417 回答