Ich verwende Factory Girl/Rspec2/Rails 3.Factory Girl: Wie verknüpfe ich einen Datensatz mit einem anderen Datensatz, ohne einen neuen Datensatz zu erstellen?
In factories.rb, ich habe:
Factory.define :user do |user|
user.name 'Some guy'
user.email '[email protected]'
user.password 'password'
end
Factory.define :org_admin, :parent => :user do |user|
user.email '[email protected]'
end
Factory.define :user_with_membership_request, :parent => :user do |user|
user.email '[email protected]'
end
Factory.define :organization do |org|
org.name 'MEC'
org.description 'Mountain Equipment Co-op'
end
Factory.define :membership do |membership|
membership.user { Factory(:user) }
membership.organization { Factory(:organization) }
end
Factory.define :admin_membership, :parent => :membership do |membership|
membership.user { Factory(:org_admin) }
membership.is_admin true
membership.status 'active'
end
Factory.define :membership_request, :parent => :membership do |membership|
membership.user { Factory(:user_with_membership_request) }
membership.status 'requested'
end
und dann in meinem rspec Test habe ich:
it 'should accept the membership request' do
@org_admin = Factory(:org_admin)
test_sign_in(@org_admin)
@organization = Factory(:organization)
@membership_request = Factory(:membership_request)
put :update, :organization_id => @organization.id, :id => @membership_request.id, :acceptance => 'approve'
...
end
Wenn ich den Test starte, bekomme ich:
Failure/Error: @membership_request = Factory(:membership_request)
Validation failed: Name has already been taken
Ich verstehe den Grund für den Fehler, weil FactoryGirl eine andere Organisation (mit dem gleichen Namen) erstellt.
Aber was ich tun möchte, ist mehrere Mitgliedschaften alle mit der gleichen Organisation verbunden zu schaffen. Wie mache ich das?
Danke.
Sean
Danke Zeteic. Ich habe das benutzt. Es funktioniert für jetzt. (Wenn es mehr als eine Org gibt, muss ich wohl eine andere Lösung finden ... ein anderes Problem für einen anderen Tag. " –