2012-05-04 17 views
15

Rails 3 uygulamam için birkaç geçiş yazdım ancak geçişlerin sırasını değiştirmek istiyorum. Geçiş sırasını veya sırasını nasıl değiştirebilirim? Geçiş dosyasını, zaman damgası olarak görünen ile yeniden adlandırmak kadar basit mi?Raylar geçiş değiştirme sırası veya siparişi

Bunun garip bir soru olduğunu biliyorum, ancak temel olarak, geçişlerimin bir karmaşasını yaptım ve bazı eski geçişleri kaldırdım ve şimdi yeni bir tane oluşturmadan önce bir tabloyu düşürmem gerekiyor. Ayrıca, yeni tablo geçişinde bırakma ifadesini ekleyebileceğimi de biliyorum, ancak geçişlerin nasıl yeniden sıralanacağını merak ediyorum.

cevap

15

Evet, önek sırasına göre çalıştırılmamış geçişleri çalıştırır. Rayların önceki sürümlerinde, belki 2.1 veya 2.2, onlar 01 ile başlayan numaralandırıldı, ancak zaman damgalarına geçtiler.

Hangi geçişlerin çalıştığını takip eden bir tablo var. Amaçlar, birden çok geliştiricimin geçişlerimi ekledim ve daha sonra sürüm kontrolünde kontrol ettim. Yani, kaçmamış bir göç olabilir, ancak en çok sayıya sahip olan göçten önce numaralandırılır.

Geçiş sırasını değiştirirseniz (ve bende), yeniden sıralama yaptığınız tüm geçişlerden önce ilk aşağı sürümü daha iyidir. db:migrate ile VERSION seçeneğini kullanın. Saklamak istediğiniz en yüksek numaralı taşıma (aşağı koşma) 20120318143249 ise, bu şekilde arayın.

rake db:migrate VERSION=20120318143249 

Ben genellikle göç üzerine halsiz ve benim memnuniyeti için göç bilgi almak kadar yeniden çalıştırın. Bazen onları tekrar sipariş ediyorum, onlardan birinde çalışmak istediğimde ve sonuncu olmasını istiyorum.

4

Evet, dosya adının öneki, yürütme sırasını belirler. Ancak, DB/start'ınızı silerseniz, bunun yalnızca mevcut sisteminizi değiştireceğini unutmayın.

+0

Her zaman doğru değil. Daha sonra geçişlerin geri alınabilir olduğunu varsayarak, @ Marlin-Pierce tarafından önerildiği gibi, db: rakor VERSION = <özel zaman damgası> 'seçeneğini kullanabilirsiniz. – varleti