2012-07-06 6 views
5

मैं इस उदाहरणमैं कैसे एक कारखाने के भीतर एक स्थानीय चर सहेज सकता

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 

वहाँ है एक लेट या कुछ और ...

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 

साथ इस लक्ष्य को हासिल करने का कोई तरीका यह है कि यह काम करता है लेकिन दो my_site बनाता है जो एक साइट ऑब्जेक्ट है लेकिन मुझे उन्हें एक जैसा होना चाहिए ... इस

+3

स्थानीय चर के साथ समस्या क्या है? 'साइट = फैक्टरीगर्ल.क्रेट (: my_site)' – tokland

+0

आपका अधिकार जो काम करता है – Trace

उत्तर

13

संभवतः सबसे सरल स्थानीय चर का उपयोग करना है:

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