Câu trả lời:
rake db:migrate:status
(Rails 3 đến 5) hoặc rails db:migrate:status
(Rails 5) sẽ thực hiện điều này. Xem cam kết này .
up
có nghĩa là di chuyển đã được chạy. down
có nghĩa là di chuyển đã không được chạy.
rake -T
nhưng những người khác làm gì?
up
có nghĩa là di chuyển đã được chạy. down
có nghĩa là di chuyển đã không được chạy.
Có rake db:abort_if_pending_migrations
(ít nhất là trong Rails 2.3.3, không chắc chắn khi nó được giới thiệu). Mô tả cho biết 'Tăng lỗi nếu có các di chuyển đang chờ xử lý'. Điều này dường như được sử dụng nhiều hơn như một điều kiện tiên quyết cho các nhiệm vụ khác, nhưng tôi đoán bạn có thể sử dụng nó cho mục đích của mình.
EDIT: Đây là một ví dụ về đầu ra sau khi vừa tạo và không chạy di chuyển 'thử nghiệm'
rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
20090828200602 Test
Run "rake db:migrate" to update your database then try again.
Lệnh này sẽ liệt kê tất cả các di chuyển với trạng thái của chúng ( UP
hoặc DOWN
)
Đường ray 3 và 4
rake db:migrate:status
Đường ray 5
rake db:migrate:status
# Or
rails db:migrate:status
rake db:version
sẽ thực hiện điều này trên Rails 2.
Hãy thử rake -h (trợ giúp) và xem qua rake -n (= rake --dry-run). Vì vậy, có lẽ một cái gì đó như rake -n db: di chuyển sẽ giúp bạn có được những gì bạn muốn.
Có thể không hoàn toàn là những gì OP đang yêu cầu, nhưng nếu bạn chỉ cần nhanh chóng kiểm tra xem có bất kỳ sự di chuyển nào đang chờ xử lý để sử dụng trong một nhiệm vụ cào không, mà không cần dùng đến
rake db: di chuyển: trạng thái | grep down (có thể không hoạt động nếu bạn đang ở trên Windows)
ActiveRecord :: Migration.check_pending! (tăng ActiveRecord :: PendingMigrationError mà bạn cần giải cứu)
bạn có thể sử dụng nhu cầu_migration? phương thức: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/ class
ActiveRecord::Migrator.needs_migration?
trong Rails 5.1
Sau lệnh để kiểm tra trạng thái di chuyển:
rake db:migrate:status
HOẶC LÀ
Khi bạn chạy máy chủ của mình, nó sẽ hiển thị thông báo để chạy di chuyển đang chờ xử lý của bạn trước tiên.
Nếu bạn muốn xem có bao nhiêu di chuyển được thực hiện hoặc đang chờ xử lý, bạn có thể xem bằng cách sử dụng lệnh bên dưới.
rails db:migrate:status
Thông tin thêm về liên kết này: Rails Active Record Migration
Nếu bạn cần một bash one-liner để xác định có nên chạy di chuyển hay không (ví dụ: chỉ di chuyển trong lệnh giai đoạn phát hành Heroku khi có di chuyển đang chờ xử lý), điều này hoạt động:
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
Don't know how to build task 'db:migrate:status'
trên đường ray 3.2.8