2010-04-04 22 views
12

मैं रेल पर रूबी के लिए नया हूं, और मैं खुद को RoR (और बास गिटार) सिखाने के लिए एक बास गिटार शिक्षक बनाने की कोशिश कर रहा हूं। Walkthroughs ActiveRecord कक्षाओं को बनाने के लिए मचान का उपयोग करते हैं, लेकिन वे स्टैंडअलोन टेबल से मेल खाते हैं; belongs_to या has_many का कोई उपयोग नहीं है।मैं मचान का उपयोग करके कई-एक रिश्ते कैसे बना सकता हूं?

मैं तीन वर्ग बनाना चाहता हूं: स्केल, गिटारस्ट्रिंग, और फ्रेट। प्रत्येक स्केल में कई गिटारस्ट्रिंग्स होते हैं, जिनमें से प्रत्येक में कई फ्रेट होते हैं।

मैं मचान का उपयोग करके इस संबंध के साथ कक्षाएं कैसे बना सकता हूं? क्या इसे एक बार में करने का कोई तरीका है, या क्या मुझे उन्हें मचान का उपयोग करके एक असंबंधित राज्य में बनाने की ज़रूरत है, फिर हाथों से संबंध जोड़ें? या क्या मैं पूरी तरह से मचान को मिटाना चाहिए?

+0

http://stackoverflow.com/questions/502119/rails-scaffold-to-automatically-do-one-to-many-relationship – hobodave

+0

@ होबोडेव के संभावित डुप्लिकेट: सिलिमार, हाँ। वह पूछ रहा है "क्या यह किया जा सकता है" और मैं पूछ रहा हूं "क्या ऐसा करने का यह तरीका है, अगर नहीं, तो कैसे?" – Simon

+0

आप मेरे उत्तर में संपादन को देखना चाहते हैं। –

उत्तर

16

मैंने कुछ हफ्ते पहले रेल पर रूबी सीखना शुरू किया था, और मुझे चीजों की लटका पाने और मचान का उपयोग न करने और कमांड लाइन से विभिन्न हिस्सों को उत्पन्न करने के माध्यम से अपना रास्ता सीखना बहुत आसान लगता है (या एक आईडीई में मैक्रोज़)।

हालांकि, मैं जो कह सकता हूं, जब आप चीजों को उत्पन्न करने के लिए मचान का उपयोग करते हैं, तो आप इसे "संसाधन" उत्पन्न करने के बारे में सोचते हैं, इसलिए आप एक समय में केवल एक संसाधन बनाने जा रहे हैं, फिर संबंधों में जोड़ें बाद में हाथ से

हालांकि, उत्पन्न मॉडल कमांड आपके लिए इन रिश्तों को बना सकता है। आइए कहें कि आपने स्केल संसाधन बनाने के लिए मचान का उपयोग किया था।

फिर आप

ruby script/generate model GuitarString name:string scale:references 

पैमाने कर सकता है: संदर्भ अपने GuitarString मॉडल पर एक belongs_to :scale पैदा करेगा, लेकिन आप has_many जोड़ने की आवश्यकता होगी: अपने पैमाने पर मॉडल के लिए guitarstrings।

जेनरेट मॉडल कमांड भी आपके लिए और अन्य फ़ाइलों की आवश्यकता (फिक्स्चर) के लिए एक माइग्रेशन स्क्रिप्ट बनाता है, जो मचान के समान है, लेकिन विचार या नियंत्रक या कुछ भी स्वत: नहीं करता है।

संपादित करें:

यह आमतौर पर है कि कैसे आप काम करने के लिए चाहते करने जा रहे हैं - का उपयोग उत्पन्न/मॉडल या/दृश्य उत्पन्न या/नियंत्रक उत्पन्न या/माइग्रेशन उत्पन्न करते हैं। अधिकांश रेल डेवलपर्स मचान का उपयोग नहीं करते हैं, क्योंकि इसका "एक आकार सभी फिट बैठता है" शायद ही कभी चीजों को पूरी तरह से फिट करता है। हालांकि, अधिकांश रेल डेवलपर्स मैंने जेनरेट किए गए जेनरेट कमांड का उपयोग करते हैं - यह हाथ से मददगार और फिक्स्चर बनाने के साथ समय बचाता है, और यह प्रत्येक फ़ाइल को एक बुनियादी टेम्पलेट जेनरेट करता है जिसे आप जोड़ सकते हैं।

कई रूबी आईडीई जैसे जेटब्रेन के रूबीमाइन में मैक्रोज़ हैं जो अनिवार्य रूप से इन आदेशों को निष्पादित करते हैं। रूबीमाइन में आप ctrl + alt + g कर सकते हैं, फिर आप जो उत्पन्न करना चाहते हैं उससे संबंधित एक और कुंजी दर्ज करें।

जैसा कि मैंने उल्लेख किया है, "संदर्भ" शब्द का उपयोग करके संबंधित_तो संबंध उत्पन्न किया जा सकता है। दूसरों को आप हाथ से जोड़ देंगे।