- create_table
- change_table
- drop_table
- add_column
- change_column
- rename_column
- remove_column
- add_index
- remove_index
Yaratılan her Migration sınıfı ‘db/migration’ dizini altında saklanmaktadır. Oluşturulan sınıfın formatı ‘YYYYMMDDHHMMSS_create_musteri.rb’ (YılAyGünSaatDakikaSaniye formatındadır) gibidir.
Örneğin: Musteri sınıfını ‘20090705103005_create_musteri.rb’ gibi tanımlarız. KurumsalSutunEkleMusteri sınıfını da ‘20090705104030_kurumsal_sutun_ekle_musteri.rb’ olarak tanımlarız. Kütüğün ismini değiştirdiğimizde, sınıfın ismini de güncellemeyi unutmamak gerekir.
create_table ve drop_table
Aşağıdaki yapı ‘musteri’ adında bir tablo oluşturmakta ve oluşturulan tabloya ‘ad’ ve ‘tanim’ sütünlarını eklemektedir. Birincil Anahtar (Primary Key) ‘id’ sütununu da otomatik olarak eklemektedir. Timestamp tipinde ‘created_at’ ve ‘updated_at’ adında iki sütunu da otomatik olarak kendisi yaratmaktadır. Tabloyu drop etmeyi de basitçe örnekte görmekteyiz. change_table
Tablodaki sütünları istedigimiz gibi güncelleme/ekleme yapabiliriz. Üstelik bunda da bir sınırlama yoktur. Aşağıdaki örneği inceleyelim.Bu örnekte ‘musteri’ tablosunda;
1) ‘kurumsal’ sütununu ekler ve her yeni müşteri için bu alanı ‘false’ olarak set eder ama gecmişte yaratılmış tüm müşteriler için bu alanı ‘true’ olarak set eder.
2) ‘tanim’ ve ‘ad’ sütünlarını siler,
3) 'hizmet_no’ sütununu yaratır ve bu alanın üzerine index bırakır.
4) ‘guncellenen_kod’ sütununun adını ‘gncl_kod’ olarak değiştirir.
add_column ve remove_column
Boş bir migration sınıfını yaratmak için ruby konsolunda aşağıdaki ilk komut çalıştırılır. Burada migration’dan sonra gelen sınıfın öneki; ‘Add’ ise ‘add_column’, ‘Remove’ ise ‘remove_column’ anlamına gelmektetir. Formatı da: ‘AddXXXToYYY’ veya ‘RemoveXXXFromYYY’ şeklindedir. Aşağıda verilen ruby komutları ve komutların çalıştırılmasından sonra oluşak migration sınıflarının gösterimi vardır.
Rolling Back
Migration üzerinde hata yapıyor olmamız kaçınılmaz bir gerçektir. Hata yapmamız durumunda bir önceki migration’ı rollback etmek için aşağıdaki komut çalıştırılır.
rake db:rollback
bu son migration’ın down metodunu çağırır, eğer birkaç önceki migration’a gitmek istiyorsak;
rake db:rollback STEP=3
son 3 migration’ın down metodunu çalıştırır.