डेटाबेस में किए गए हर बदलाव के लिए, आप एक नया माइग्रेशन लिखते हैं। माइग्रेशन में आमतौर पर दो विधियां होती हैं: एक "अप" विधि जिसमें परिवर्तन लागू होते हैं और एक "डाउन" विधि जिसमें परिवर्तन पूर्ववत होते हैं। एक ही कमांड डेटाबेस को अद्यतित करता है, और इसका उपयोग डेटाबेस को स्कीमा के एक विशिष्ट संस्करण में लाने के लिए भी किया जा सकता है। रेल में, माइग्रेशन को प्रोजेक्ट निर्देशिका में अपनी निर्देशिका में रखा जाता है और किसी अन्य प्रोजेक्ट कोड की तरह वर्जन कंट्रोल में चेक किया जाता है।