2010-03-02 11 views
9

Sadece Factory Girl'a giriyorum ve çok daha kolay olması için bir zorluğa koşuyorum. Belgeleri çalışma örneğine dönüştüremedim.Fabrika Kız: Ana nesnelerin otomatik olarak atanması

class League < ActiveRecord::Base 
    has_many :teams 
end 

class Team < ActiveRecord::Base 
    belongs_to :league 
    has_many :players 
end 

class Player < ActiveRecord::Base 
    belongs_to :team 
end 

Ne yapmak istiyorum şudur:

Aşağıdaki modellere sahip varsayalım

team = Factory.build(:team_with_players) 

ve bu benim için oyuncuların bir demet kurmak var. Bu çalıştı:

Factory.define :team_with_players, :class => :team do |t| 
    t.sequence {|n| "team-#{n}" } 
    t.players {|p| 
     25.times {Factory.build(:player, :team => t)} 
    } 
end 

Ama t bir Team, bir Factory::Proxy::Builder var gerçekten değil çünkü bu, :team=>t bölümünde başarısız olur. Bir oyuncuya atanmış bir ekibin olması için numaralı telefonun var.

Bazı durumlarda, bir League oluşturmak ve benzer bir şey yapmak istiyorum, birden çok oyuncu ile birden çok takım oluşturmak istiyorum.

Neyi eksik? Bu konuda

+0

Sadece bu aynı problem (aynı hata) koştu ve tüm etrafına baktı ve bir çözüm bulamadı. –

cevap

5
Factory.define :team do |team| 
    team.sequence(:caption) {|n| "Team #{n}" } 
end 

Factory.define :player do |player| 
    player.sequence(:name) {|n| "John Doe #{n}" } 
    player.team = nil 
end 

Factory.define :team_with_players, :parent => :team do |team| 
    team.after_create { |t| 25.times { Factory.build(:player, :team => t) } } 
end 
2

Nasıl:

Factory.define :team_with_players, :class => :team do |t| 
    t.sequence { |n| "team-#{n}" } 
    t.players do |team| 
    25.times.collect { |n| team.association(:player) } 
    end 
end 
+0

Ancak oyuncunun takım için bir referansa ihtiyacı varsa, bunu nereden bulabilirim? Bu örnekte, "ekip" bir fabrika nesnesine karşılık gelir ... –

+0

Buna benzer bir şeyim var: team.association (: player,: team_id => team) garip görünüyor ama benim için çalışıyor. – Priit

+1

bunu yaptığımda şikayet ediyor: "Beklenen Ekip, ama FactoryGirl :: Proxy" ya da bunun gibi bir şey. –

İlgili konular