Answers:
rake db:migrate:status
(第3到5条)或rails db:migrate:status
(第5条)将完成此操作。看到这个提交。
up
表示迁移已运行。down
表示尚未运行迁移。
rake -T
其他人身上吗?
up
表示迁移已运行。 down
表示尚未运行迁移。
有rake db:abort_if_pending_migrations
(至少在Rails 2.3.3中,不确定何时引入)。描述说“如果有挂起的迁移,则引发错误”。这似乎更多地用作其他任务的先决条件,但我想您可以将其用于您的目的。
编辑:这是刚刚生成但未运行“测试”迁移后的输出示例
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.
此命令将列出所有迁移及其状态(UP
或DOWN
)
导轨3和4
rake db:migrate:status
滑轨5
rake db:migrate:status
# Or
rails db:migrate:status
可能不完全是OP的要求,但是如果您只是需要快速检查是否有任何待处理的迁移待用于rake任务中,而无需诉诸于
耙db:migrate:status | grep down(如果在Windows上可能无法工作)
ActiveRecord :: Migration.check_pending!(引发您需要抢救的ActiveRecord :: PendingMigrationError)
你可以使用needs_migration吗?方法:https: //apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
ActiveRecord::Migrator.needs_migration?
在Rails 5.1中
如果您需要bash一线式来确定是否运行迁移(例如,仅在存在挂起的迁移时才在Heroku发布阶段命令中进行迁移),则可以这样做:
(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'
上了3.2.8