2009-02-04 15 views
25

मैं इस guide (धन्यवाद, ट्रेवोर्टर्क) में रेल फिक्स्चर के बारे में पढ़ रहा हूं। ऐसा लगता है कि आप एक यम फ़ाइल में कक्षाएं परिभाषित करते हैं और वे स्वचालित रूप से test डीबी - कूल में लोड हो जाते हैं।रेल फिक्स्चर - आप विदेशी कुंजी कैसे सेट करते हैं?

लेकिन यदि आप यह निर्दिष्ट करना चाहते हैं कि यह नुस्खा उस कुकबुक (या जो कुछ भी) से संबंधित है तो आप यह कैसे करते हैं?

क्या आप यम कोड में cookbook.id और recipe.cookbook_id के लिए मान निर्दिष्ट करना चाहते हैं? (बस एक अनुमान - गाइड ऐसा कुछ भी नहीं दिखाता है।) या क्या कोई और उपयुक्त तरीका है?

उत्तर

53

आपको नामांकित फिक्स्चर का उपयोग करना चाहिए, जो स्वचालित रूप से आपके लिए एक आईडी नंबर उत्पन्न करता है जहां आप एक प्रदान नहीं करते हैं। ये आईडी संख्याएं आपके द्वारा उपयोग की जाने वाली स्ट्रिंग के अनिवार्य रूप से पूर्णांक हैंश हैं। आप नामित संस्करण को संदर्भित कर रहे हैं "_ id" न जोड़ें:

# recipes.yml 
chicken_soup: 
    cookbook: my_recipes 

# cookbooks.yml 
my_recipes: 
    title: My Test Cookbook 
+0

वास्तव में वास्तव में काम करने वाले सभी अधिकार। धन्यवाद दोस्त। – Ethan

+0

वाह, यह सोचा कि यह बहुत आसान है जैसा कि मैंने सोचा था :) मैं 'क्लाइंट_आईडी: <% = संपर्क (: डेव) .id%>' (जो स्पष्ट रूप से काम नहीं करता) जैसे मूर्ख चीजों की कोशिश कर रहा था। – Skilldrick

+3

यदि आपके पास कोई आईडी है जिसे ऑब्जेक्ट से अलग किया गया है (उदाहरण के लिए my_cookbook_id), तो आप ऑब्जेक्ट की क्लास को इस प्रकार निर्दिष्ट कर सकते हैं: 'my_cookbook: my_recipes (कुकबुक) ' –

1

ही, यदि आप कई संघ (HABTM) तुम सिर्फ स्थिरता में सहयोग के लिए एक सरणी देने के लिए एक कई करना चाहते हैं :

# recipes.yml 
chicken_soup: 
    cookbooks: [my_recipes, another_recipe] 
संबंधित मुद्दे