2012-10-07 17 views
9

Bir fabrikada, oluşturulmakta olan nesnenin diğer alanlarından birinin değerine nasıl değinirim?, alan2 başlatılırken alan1 değerine değinmenin herhangi bir yolu var mı?

Ben Faker farklı bir rastgele nickname fabrika oluşturulan her zaman oluşturmak için kullanmak istediğiniz, benim modeli Widget iki alan, nickname ve benim fabrikaya İçinde fullname

sahiptir varsayalım. (Sonunda, dizi (: takma ad) kullanmak zorunda olduğumu anladım, aksi takdirde adı tüm fabrikalar için aynıdır.)

Bazı onaylamaların test edilmesini kolaylaştırmak için, bir tam adı oluşturmak istiyorum. nerede koymak ne olursa olsun fullname = "Full name for #{nickname}"

FactoryGirl.define do 
    factory :widget do 
    sequence(:nickname) { |n| Faker::Lorem.words(2).join(' ') } 
    sequence(:fullname) { |n| "Full name for " + ????? } 
    end 
end 

gibi bir şey, takma dayalı ??? gider, takma ad ne ayarlanmış olursa olsun #<FactoryGirl::Decl... olsun.

İsim, name.to_s, name.value denedim ... hiçbir şey işe yaramıyor gibi görünüyor.

cevap

12

Evet. İşte Fabrika Kız Getting Started doc gelen bir örnek: Ayrıca

factory :user do 
    first_name "Joe" 
    last_name "Blow" 
    email { "#{first_name}.#{last_name}@example.com".downcase } 
end 

FactoryGirl.create(:user, last_name: "Doe").email 
# => "[email protected]" 

, ben genellikle config/application.rb yılında, ayrı benim dizileri tanımlamak: Aynı yapıyor yarar olabilir

FactoryGirl.define do 
    sequence(:random_string) { |s| ('a'..'z').to_a.shuffle[0, 30].join } 
end 

. O zaman muhtemelen böyle bir şey yapabileceğini: Bahse konu benim örnek kodda çalıştığımız ilk şey oldu

FactoryGirl.define do 
    factory :widget do 
    nickname generate(:name_faker) # assuming you had defined a :name_faker sequence 
    fullname generate("Full name for #{nickname}") 
    end 
end 
+0

, ancak bunun yerine # {field1} alanın değerini elde nedeniyle, bazı nesne # verir jpwynn

+0

Tamam, bunu özledim. Güncellenmiş cevabımı kontrol et. –

+0

neat hrick, Ben bir deneyin deneyin vereceğim! – jpwynn

İlgili konular