Varios tipos de usuarios. Polimorfismo Devise

Buenas! Hace pocos meses decidí aprender a utilizar Ruby on Rails, y tras aprender algo de Ruby y realizar algunos proyectos en RoR por videotutoriales decidí comenzar mi propio proyecto. Una vez hecho un diagrama de las clases y relaciones que necesitaré me encuentro con mi primer problema y es que necesito varios perfiles de usuarios donde para algunos tipos de usuarios se requerirá mas información que para otros. Además que cada tipo de usuario, una vez registrados, tendrán diferentes paginas home con diferentes funciones. Mi intención es realizar una asociación polimórfica desde el model User, generado por devise, que contenga los atributos comunes de todos los tipos de usuarios (email, nombre, contraseña) hacia los modelos de los tipos de usuario (cocinero, cantante, deportista,...), es decir:

class User < ActiveRecord::Base ... belongs_to :meta, :polymorphic => true end

class Chef < ActiveRecord::Base has_one :user, :as => :meta ... end

class Singer < ActiveRecord::Base has_one :user, :as => :meta ... end

...

Segun pensé, la clase de cada usuario quedaría registrado al momento del registro, desde el propio formulario de registro de devise añadiendo un seleccionador desplegable que elija un unico tipo de usuario. Y para iniciar sesión solo hará falta la contraseña y el email, sin el seleccionador. Pero la verdad no tengo ni idea de como realizar esto (no se como habilitar el seleccionador para que registre la clase de usuario y hacer las modificaciones pertinentes en el controlador Registrations de devise, ni como redireccionar a paginas diferentes de acuerdo al tipo de usuario que inicie sesión). Os pido ayuda por si habeis lidiado con un problema similiar ,por si conoceis alguna manera de realizar esto, o si hay otra manera más fácil e eficiente. Perdonad si he dicho algún concepto mal, pero llevo poco tiempo utilizando ruby on rails y estoy un poco perdido. Muchas gracias de antemano y un saludo!

PD: Me gustaría evitar el uso de gemas, como camcam, para esto pues he estado viendo que es necesario muchos condicionales que, a mi parecer, sobrecargan el sistema. También leí conceptos como STI (singular table inheritance), pero creo que no sería aplicable al guardar información variable para cada tipo de usuario.