С имеющейся у меня схемой БД с изменением типа юзера проблем нет, но есть пара нюансов. При смене типа пользователя нужно удалить текущую запись пользователя во вспомогательной таблице его текущего типа, создать новую запись во вспомогательной таблице его нового типа, и обновить тип и айди в основной таблице user_logins. Нюанс в том, что это должно быть атомарной транзакцией, но ActiveRecord.transaction легко позволяет это сделать. Еще нюанс - при изменении типа пользователя, ID доп. таблиц будут бессмысленно инкрементироваться, еще раз показывая, что было бы неплохо избавиться от этих лишних ключей.
Для обработки этих действий я создал контроллер user_logins_controller, обеспечивающий стандартный RESTful функционал для user_logins(без добавления и удаления). Доступ туда все теми же стандартными фильтрами ограничивается для всех, кроме админов. При переходе на edit, грузится форма с одним единственным выпадающим списком с типами пользователей. При сабмите проверяется, изменился ли тип, и если изменился, то п