2012-05-04 34 views
15

Tôi đã viết một số di chuyển cho ứng dụng Rails 3 của mình, nhưng tôi muốn thay đổi thứ tự của các di chuyển. Làm thế nào tôi có thể thay đổi thứ tự hoặc trình tự di chuyển? Có đơn giản như đổi tên tệp di chuyển với những gì dường như là dấu thời gian không?Trình tự thay đổi đường dẫn hoặc thứ tự

Tôi biết đây là một câu hỏi kỳ lạ, nhưng về cơ bản, tôi đã thực hiện một số di chuyển và xóa một số di chuyển cũ và bây giờ tôi cần phải xóa bảng trước khi tạo một bảng mới. Tôi cũng biết tôi có thể bao gồm tuyên bố thả trong việc tạo bảng mới, nhưng tôi tò mò muốn biết cách sắp xếp lại các lần di chuyển.

Trả lời

15

Có, nó chạy các di chuyển chưa được chạy theo thứ tự của tiền tố. Trong các phiên bản trước của đường ray, có thể là 2.1 hoặc 2.2, chúng được sử dụng để đánh số bắt đầu bằng 01, nhưng chúng đã chuyển sang dấu thời gian.

Có một bảng theo dõi việc di chuyển nào đã chạy. Ý định là, nhiều nhà phát triển của tôi đã thêm di chuyển và kiểm tra chúng trong kiểm soát phiên bản sau đó. Vì vậy, có thể có di chuyển chưa chạy, nhưng được đánh số trước khi di chuyển được đánh số cao nhất đã chạy.

Nếu bạn thay đổi chuỗi di chuyển, (và tôi có) thì tốt hơn hết là giảm phiên bản đầu tiên trước tất cả các lần di chuyển bạn sắp xếp lại. Sử dụng tùy chọn VERSION với db:migrate. Nếu di chuyển được đánh số cao nhất mà bạn muốn giữ (không chạy xuống) là 20120318143249, hãy gọi theo cách này.

rake db:migrate VERSION=20120318143249 

Tôi thường chạy xuống khi di chuyển và chạy lại cho đến khi tôi nhận được chi tiết về quá trình di chuyển đến mức hài lòng của tôi. Đôi khi tôi ra lệnh cho họ, khi tôi muốn làm việc với một trong số họ, và tôi muốn nó là người cuối cùng.

4

Có, tiền tố trên tên tệp là điều xác định thứ tự thực thi. Tuy nhiên, hãy nhớ rằng điều này sẽ chỉ thay đổi hệ thống hiện tại của bạn nếu bạn xóa sạch DB/bắt đầu lại.

+0

Không phải lúc nào cũng đúng. Giả sử di chuyển sau này có thể đảo ngược, bạn có thể 'rake db: di chuyển VERSION = ' như được đề xuất bởi @ Marlin-Pierce – varleti

Các vấn đề liên quan