Нет действительно правильного или неправильного способа сделать это. Исходя из того, что вы сделали, 4-я миграция должна просто выгружать данные в методе down. Каждое падение должно только отменять действия вверх.
Загрузка данных в миграции, которая создает таблицу, определенно не требуется. Если у вас есть 3 таблицы, которые создают отношения has_many или own_to, то имеет смысл поместить данные в отдельную миграцию, чтобы вы могли создать отношения и затем использовать их в своей загрузке данных.
И все же, если у вас есть задача rake для загрузки данных, зачем беспокоиться о миграции, которая запускает эту задачу rake? Просто сделайте запуск задачи rake частью вашей установки или просто используйте задачу rake для загрузки или выгрузки некоторых демонстрационных данных.
Как правило, я держу свою схему миграции сфокусированной и помещаю любую загрузку данных в задачу rake, которую я вызываю независимо.