Одна возможность рассмотреть: внесение деструктивных (то есть односторонних, необратимых) изменений в вашу модель может быть проблематичным по причинам, помимо ограничения вашей способности предоставлять эту бета-функциональность. Например, может быть трудно отказаться от изменения, если у вас возникли проблемы во время миграции.
Вместо этого я бы рекомендовал поискать способы добавления только в модель: добавлять столбцы, оставляя старые столбцы на месте для обратной совместимости, хранимые процедуры версий, если вы их используете, и т. Д. Если вам нужно изменить типы данных столбцов вместо этого создайте новый столбец целевого типа данных, а затем перенесите данные существующих строк из старого столбца в новый столбец в новом формате. Затем вы можете выполнить миграцию базы данных в тестовой среде и подтвердить, что старая и новая версии приложения продолжают работать с изменениями базы данных.
Одним из возможных способов обслуживания нескольких версий вашего приложения является использование альтернативного формата response_to для вашего бета-сайта. Вы можете создать метод в вашем ApplicationController, чтобы проверить, был ли пользователь в бета-версии. Если true, вы можете переопределить значение request.format, и в вашем блоке response_to есть ответ типа "format.beta".
Проблема с этим подходом - логика контроллера. Без внедрения какой-либо логики переключения в методы контроллера у вас не будет способа изменить путь кода контроллера. Это может не быть серьезной проблемой, в зависимости от того, сколько у вас изменений контроллера.
(Кстати, похоже, у нас очень похожие имена! :-))