2010-02-10 9 views
6

यहाँ मेरी मॉडल हैफैक्टरी लड़की और has_one

Factory.define :video do |v| 
    v.filename {Sham.filename} 
    v.video_url {Sham.url} 
end 

Factory.define :audition do |a| 
    a.video  {|a| a.association(:video)} 
    a.label  {Sham.label} 
end 

मैं एक वीडियो कारखाना एक ऑडिशन है कि कैसे बना सकते हैं,

मेरा मतलब है, में सक्षम हो प्रति:

v = Factory.create(:video) 
v.audition # I'd like this to be not nil ! 

क्योंकि मैं हा मेरे वीडियो पर एक पर्यवेक्षक है जो वीडियो ऑब्जेक्ट से ऑडिशन तक पहुंचने का प्रयास करता है

मैंने कई चीजों की कोशिश की लेकिन मैं हमेशा एक स्टैक स्तर के साथ बहुत गहरी या ऑडिशन शून्य के साथ समाप्त होता हूं।

क्या आपके पास कोई विचार है?

धन्यवाद, माइक

उत्तर

7

अगर ऐसी बात मैं दूसरे कारखाने में संघ जोड़ेंगे:

Factory.define :video do |v| 
    v.filename      {Sham.filename} 
    v.video_url      {Sham.url} 
    v.audition      {|v| v.association(:audition)} 
end 

तो फिर तुम

v = Factory(:video) # This will now have an audition 
a = v.audition # This should not be nil 

और

a = Factory(:audition) # An audition without a video, if that's possible? 
कर सकते हैं

आप किसी भी संघ की जरूरत के रूप में जब आप अपने परीक्षण में कारखाना बनाने के लिए, यानी ओवरराइड कर सकते हैं:

v = Factory(:video, :audition => Factory(:audition)) 
v = Factory(:video, :audition => nil) 

आशा है कि मैं क्या कहा है समझ में आता है और सच है lol। हमें बताएं कि आपके द्वारा किस प्रकार प्रबंध किया जाता है।

+1

पी। मुझे लगता है कि आपको एक स्टैक स्तर बहुत गहरा हो जाता है यदि आप कुछ ऐसे मॉडलों को कैसे बताते हैं जो दूसरे के साथ सहयोग करते हैं। – tsdbrown

+0

हम्म यह बिल्कुल समस्या है लेकिन मैं कुछ सशर्त जादू के साथ उम्मीद कर रहा था, मैं इसे दोनों में शामिल कर सकता था :-) आपका उत्तर पूरी तरह से समझ में आता है, धन्यवाद, – Mike

+0

दोनों पक्षों में फैक्ट्री गर्ल एसोसिएशन लगाने की कोशिश करने के बाद अटकने के बाद एसोसिएशन मैंने आखिरकार इसे छोड़ दिया। और बस "दास" मॉडल के अंदर एसोसिएशन डाल दिया। मेरे चश्मे में जब मुझे "मास्टर" मॉडल बनाने की ज़रूरत होती है, तो भी मैं "गुलाम" फैक्ट्री का उपयोग करता हूं। उदाहरण के लिए: फैक्ट्री.क्रेट (: गुलाम) .मास्टर। – Sam

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