Правильный workflow при работе с миграциями и данными в команде?
Пытаюсь заюзать миграции, но пока не могу концептуально уложить их в процесс разработки в команде с применением VCS.
В частности не понятно, как должны добавляться данные.
В миграции? Если да, то выходит что при тестировании (не автоматическом) при каждом чихе (изменении данных) придется создавать новую миграцию.
В дампе? Если да то вообще не понятно как параллельно применять и данные из дампов и миграции. Хотя вроде бы все логично - миграции содержат структуру, дамп - данные, но мне кажется столько подводных камней будет когда разработчики начнут параллельно изменять структуру и данные одной таблицы к примеру...
В фикстурах может быть? А что, насоздавал их и вуаля, у всех одинаковые данные для тестирования. Загрузил код из VCS, загрузил фикстуры и тестируй, хоть вручную, хоть автоматически.
Все мои рассуждения гипотетические, так как опыта не имею и хочу просто выяснить для себя как делать правильно.
Организация зависит от команды в которой Вы работаете, точнее от договоренностей между ее участниками. Но вообще:
миграции - структура базы данных + базовые данные которые практически никогда не меняются (например, список стран)
фикстуры - данные для тестов и разработки
А вот куда к примеру попадут данные RBAC? Я сгенерил таблицы БД для RBAC, нужно ассоциировать роли и разрешения. Кто какие получит разрешения и роли, где это будет отражено? В миграции произвести установку ролей можно, но как из миграции это делать если пользователи могут быть добавлены разные у всех разработчиков? Выходит, что должны быть одинаковые у всех по количеству ролей, чтобы представители всех были протестированы. В терминах Вашего ответа это "данные для разработки" получается, значит в фикстурах?
А что будет в случае изменения схемы ролей, новая миграция изменяющая данные в таблицах RBAC или измененная фикстура отвечающая новой схеме? По идее тут фикстура однозначно лучше, так как загружается/выгружается и не надо перекрывать данные в миграции.
Роли меняються крайне редко, то что этим ролям разрешено делать - другой вопрос.
Сами роли и разрешения - либо миграция либо контроллер который все это дело создает, т.к. эти данные будут нужны в продакшене.
Привязка ролей к пользователям - фикстуры.