2013-02-19 41 views
12

लोग,ActiveRecord एसोसिएशन के साथ मॉडल उत्पन्न करना

मैं एक ऐसी एप्लिकेशन बनाने पर काम कर रहा हूं जहां मेरी समस्या स्थान में दो इकाइयां हैं। एक इकाई "जीवविज्ञानी" है और दूसरी इकाई "प्रयोग" है, अब एक जीवविज्ञानी के पास कई प्रयोग हो सकते हैं और प्रत्येक प्रयोग में कई जीवविज्ञानी हो सकते हैं।

मैं जानता हूँ कि कमांड लाइन जनरेटर का उपयोग मॉडल और रूट बनाने के लिए कैसे:

rails generate scaffold Biologist name:string expertise:string last_pub:text 

सही तरीके से एक संघ को जोड़ने के लिए क्या है? क्या पीढ़ी के बाद मॉडल कोड जाना और अपडेट करना है? मेरे लिए अस्पष्ट बात यह है कि अगर मैं एक "belong_to" एसोसिएशन पोस्ट पीढ़ी जोड़ता हूं तो यह माइग्रेशन या कुछ चलाने के बिना डीबी स्कीमा में कैसे दिखता है? उपर्युक्त उदाहरण में यदि "प्रयोग" "जीवविज्ञानी" से संबंधित है तो "जीवविज्ञानी" तालिका में एक विदेशी कुंजी होगी, अगर मैं मॉडल श्रेणी पोस्ट पीढ़ी में एसोसिएशन जोड़ता हूं तो यह कैसे बनाया जाएगा। मैं रेल के लिए बिल्कुल नया हूं, इसलिए अगर मैं एक बेवकूफ सवाल है तो मैं क्षमा चाहता हूं।

उत्तर

2

आप experiments मेज पर एक biologist_id स्तंभ जोड़ने, और फिर अपने experiments मॉडल में belongs_to :biologist संबंध जोड़ने के लिए एक प्रवास बनाना होगा।

आप अधिक जानकारी here पा सकते हैं।

40

मुझे लगता है कि आप की तरह कुछ के लिए देख रहे हैं निम्नलिखित:

rails g scaffold Biologist experiment:references 

पढ़ें this article जोस Valim द्वारा जहां वह कैसे ऊपर करते हैं, और भी कमांड लाइन से db अनुक्रमित जोड़ने के लिए आपको दिखाता है:

+0

माइग्रेशन के बजाय आप कमांड लाइन से डीबी इंडेक्स क्यों जोड़ेंगे? यदि आप इसे माइग्रेशन से बाहर छोड़ देते हैं तो टीमेंट के डीबी को अनुक्रमित नहीं किया जाएगा ... – Meltemi

+1

इसे अपने आप आज़माएं 'रेल जी मचान जीवविज्ञानी शीर्षक: अनुक्रमणिका ईमेल: uniq'। आप देखेंगे कि इंडेक्स बनाने के लिए आवश्यक कोड स्वचालित रूप से आपके माइग्रेशन में जोड़ा गया है। यह टाइपिंग का थोड़ा सा बचाता है, और इसका मतलब है कि आप बस अपने माइग्रेशन चला सकते हैं और आगे बढ़ सकते हैं। – stephenmurdoch

+0

आईसी ... मैं, गलती से, सोचा था कि आप सीधे कमांड लाइन से स्कीमा में परिवर्तन करने का सुझाव दे रहे थे। मेरी गलती। – Meltemi

0

मैं प्रत्येक के लिए एक मॉडल उत्पन्न करता हूं और फिर एक जॉइन टेबल बनाउंगा क्योंकि आपके पास कई रिश्ते हैं। यदि आप सही तरीके से सम्मेलन का पालन करते हैं, तो रेलों को आपकी शामिल तालिका के संबंध में संबंधों को समझना चाहिए।

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

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

  • कोई संबंधित समस्या नहीं^_^