FactoryGirl参考之前创建的工厂

时间:2012-12-17 11:36:20

标签: ruby-on-rails factory-bot

我和我的工厂有点困惑,我有一个友谊工厂

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,不能只使用:授权。

1 个答案:

答案 0 :(得分: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采用键值对。这就是它的工作原理。