2010-03-02 14 views
9

मैं फैक्ट्री गर्ल में जा रहा हूं और मैं एक कठिनाई में भाग रहा हूं जो मुझे यकीन है कि मुझे बहुत आसान होना चाहिए। मैं दस्तावेज को एक कामकाजी उदाहरण में मोड़ नहीं सकता था।फैक्टरी गर्ल: स्वचालित रूप से पैरेंट ऑब्जेक्ट्स

मान लें मैं निम्नलिखित मॉडल:

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 

मुझे क्या करना चाहते हैं यह है:

team = Factory.build(:team_with_players) 

और यह मेरे लिए खिलाड़ियों का एक समूह का निर्माण किया है। मैं इस की कोशिश की:

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 

लेकिन इस :team=>t खंड पर विफल रहता है, क्योंकि t वास्तव में एक Team, यह एक Factory::Proxy::Builder है नहीं है। Iमें है जो एक खिलाड़ी को सौंपा गया टीम है।

कुछ मामलों में मैं League बनाना चाहता हूं और यह एक ही काम करता है, कई खिलाड़ियों के साथ कई टीमों को बनाना।

मुझे क्या याद आ रही है?

+0

मैं सिर्फ इस सटीक एक ही समस्या (एक ही त्रुटि) में पड़ गए और सभी चारों ओर देखा और एक समाधान नहीं मिला है। –

उत्तर

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

कैसे इस बारे में:

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

लेकिन अगर खिलाड़ी को टीम के संदर्भ की आवश्यकता है, तो मुझे यह कहां मिल सकता है? इस उदाहरण में, "टीम" एक फैक्ट्री ऑब्जेक्ट को संदर्भित करती है ... –

+0

मेरे पास ऐसा कुछ है: team.association (: player,: team_id => टीम) अजीब लगता है लेकिन मेरे लिए काम करता है। – Priit

+1

जब मैं ऐसा करता हूं तो शिकायत करता है: "अपेक्षित टीम, लेकिन फैक्टरीगर्ल :: प्रॉक्सी" या ऐसा कुछ था। –

संबंधित मुद्दे