Каждый раз, когда вы создаете миграцию с использованием сценариев (например, модель сценария / создания ...), новая миграция добавляется в правильный каталог, готовый для синхронизации с реальной базой данных.
На самом деле rake db: migrate просто проверяет, какие недостающие миграции все еще необходимо применить к базе данных, не заботясь о предыдущих.
Конечно, если вы изменяете базу данных другими способами, это обычно для получения несинхронизированных вещей, потому что, как вы сказали, вы можете применить миграцию к чему-то, что изменяется под ней.