2012-07-06 5 views
5

ho questo esempioCome faccio a salvare una variabile locale all'interno di una fabbrica

FactoryGirl.define do 
    @site = FactoryGirl.create(:my_site) 
    factory :user do 
    email    { Faker::Internet.email } 
    first_name   { Faker::Name.first_name } 
    last_name   { Faker::Name.last_name } 
    password   { 'TarXlrOPfaokNOzls2U8' } 
    active_directory { '0' } 
    companies   { [FactoryGirl.create(:company, site: @site)] } 
    sites    { [@site] } 
    end 
end 

C'è un modo per raggiungere questo obiettivo con un let o qualcosa ...

FactoryGirl.define do 
    factory :user do 
    email    { Faker::Internet.email } 
    first_name   { Faker::Name.first_name } 
    last_name   { Faker::Name.last_name } 
    password   { 'TarXlrOPfaokNOzls2U8' } 
    active_directory { '0' } 
    companies   { [FactoryGirl.create(:company, site: FactoryGirl.create(:my_site))] } 
    sites    { [FactoryGirl.create(:my_site)] } 

    end 
end 

Questo funziona ma crea due my_site che è un oggetto Site ma ho bisogno che siano uguali ... qualsiasi idea su come ottenere questo

+3

qual è il problema con una variabile locale? 'site = FactoryGirl.create (: my_site)' – tokland

+0

il tuo diritto che ha funzionato – Trace

risposta

13

Probabilmente il più semplice è usare una variabile locale:

FactoryGirl.define do 
    site = FactoryGirl.create(:my_site) 

    factory :user do 
    email    { Faker::Internet.email } 
    first_name   { Faker::Name.first_name } 
    last_name   { Faker::Name.last_name } 
    password   { 'TarXlrOPfaokNOzls2U8' } 
    active_directory { '0' } 
    companies   { [FactoryGirl.create(:company, site: site)] } 
    sites    { [site] } 
    end 
end 
Problemi correlati