我和我的工厂有点困惑,我有一个友谊工厂
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,不能只使用:授权。
答案 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采用键值对。这就是它的工作原理。