2012-03-14 16 views
9

से माइग्रेशन स्क्रिप्ट उत्पन्न करना मैं रेल सीख रहा हूं, और मैं माइग्रेशन में आया हूं। ऐसा लगता है कि हर बार जब मैं एक मॉडल संपादित करना चाहता हूं, तो मुझे माइग्रेशन स्क्रिप्ट जोड़ने की आवश्यकता होगी, भले ही मैं अभी तक उत्पादन में नहीं हूं।रेल - मॉडल

क्या आप अपना मॉडल संपादित कर सकते हैं, अपनी सभी विशेषताओं को जोड़ सकते हैं, और इसे रिलीज़ करने से पहले, माइग्रेशन स्क्रिप्ट स्वत: उत्पन्न हो सकती है?

धन्यवाद!

+1

माइग्रेशन स्क्रिप्ट मैन्युअल रूप से लिखना बहुत मुश्किल नहीं है। –

+0

सच है, लेकिन मेरे पास हर बदलाव के लिए (विकास के दौरान, मेरे पास बहुत सारे बदलाव हैं), मुझे कुछ addxtoY माइग्रेशन स्क्रिप्ट की आवश्यकता है ... – Karan

+2

अच्छी तरह से, मुझे लगता है कि मैं मूल माइग्रेशन स्क्रिप्ट को संपादित कर सकता हूं, और डेटाबेस – Karan

उत्तर

3

मैं अब तक टिप्पणियों से सहमत हूं। माइग्रेशन का विचार अपने आवेदन को फिट करने के लिए अपने डेटा स्कीमा को तरल रूप से अनुकूलित करना आसान बनाता है क्योंकि आप नए फ़ील्ड जोड़ना चाहते हैं। यह एक सरल और सुंदर प्रणाली है।

तो हाँ, आप rails generate migration... का उपयोग कर सकते हैं (और चाहिए) क्योंकि यह न केवल कई सामान्य मामलों में उचित कोड उत्पन्न करता है, यह भी ट्रैक करता है कि डेटाबेस के विभिन्न संस्करणों में कौन से माइग्रेशन चलाए जाते हैं। http://guides.rubyonrails.org/migrations.html#creating-a-migration

देखें एक आम कार्यप्रवाह कुछ इस तरह हो सकता है: FIRST_NAME, LAST_NAME जैसे क्षेत्रों के साथ

  • एक नया मॉडल बनाने के लिए, उदाहरण के उपयोगकर्ता के लिए, user_name
  • इस एक संबद्ध प्रवास पैदा करेगा, जो आप कर सकते हैं bundle exec rake db:migrate का उपयोग करके चलाएं - आपकी डेटाबेस स्कीमा
  • अपडेट की जाएगी, आप तय करते हैं कि आप जन्मदिन जैसे अतिरिक्त जानकारी चाहते हैं, इसलिए rails generate migration AddBirthdateToUser birthdate:date चलाएं। कॉलम, इंडेक्स इत्यादि जैसे कुछ सरल संचालन के लिए, पूर्ण माइग्रेशन कोड जेनरेट किया जाएगा; अन्य मामलों में आपको माइग्रेशन लिखना होगा। पूरा होने पर, माइग्रेशन चलाएं।
  • यदि आपको विकास में कोई समस्या मिलती है, उदाहरण के लिए एक फ़ील्ड प्रकार फ़्लोट होना चाहिए, पूर्णांक नहीं, या आप एक इंडेक्स जोड़ने के लिए भूल गए हैं, तो आप माइग्रेशन (bundle exec rake db:rollback) वापस रोल कर सकते हैं, माइग्रेशन को ठीक कर सकते हैं और इसे फिर से चला सकते हैं।
  • अपने परीक्षण चलाएं (जो माइग्रेशन चलाएंगे), और जब यह सब आपके लिए स्थानीय रूप से काम करता है, तो फाइलों (माइग्रेशन समेत) में चेक करें और क्यूए या स्टेजिंग सर्वर पर तैनात करें, जिसमें डेटाबेस की अपनी प्रति है।
  • स्टेजिंग सर्वर पर rake db:migrate चलाएं। यदि आप एक टीम और अन्य डेवलपर्स पर हैं, तो माइग्रेशन में चेक किया गया है, तो उनकी इच्छा भी चलती है। अब आपका कोड और डेटा स्कीमा सिंक में हैं।
  • :-)
  • दोहराने

(मैं सम्मान से ऊपर एक टिप्पणी से असहमत) एक उत्पादन तैनाती के दौरान माइग्रेशन चल रहा कोई नुकसान नहीं है - आप विचार है कि बदलने के लिए, इस तरह भी परिवर्तन (जो हो सकता है गले लगाने चाहिए अन्य वातावरण में अविश्वसनीय रूप से मुश्किल) दैनिक रेल जीवन का एक सामान्य हिस्सा हैं!

4

यदि आप रेल का उपयोग 3+ करते हैं तो आप ActiveRecord के बजाय डेटामैपर पर विचार करना चाहेंगे। यह आपको एकाधिक माइग्रेशन फ़ाइलों के बजाय मॉडल में डेटा मॉडल को परिभाषित करने देता है। जैसा कि मैं समझता हूं कि डेटामैपर आपको परिवर्तनों से माइग्रेशन उत्पन्न करने देता है।

यह एक व्यापक और विश्वसनीय पैटर्न है जो अक्सर व्यापक ओआरएम समुदाय में उपयोग किया जाता है।

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