Buenos dÃas a todos,
estoy utilizando herencia para tener varios roles de usuarios en mi
aplicación.
class User < ActiveRecord::Base
end
class Agent < User
end
class Manager < User
end
Todo esto funciona bien, y puedo crear tanto usuarios con type -> Agent
ó Manager. El problema que me encuentro es como poder cambiar el tipo de
un usuario ya existente, imaginar que he creado el usuario A del tipo
Agent.
@user = Agent.new(params[:agent])
Pero ahora decido cambiar el rol de este usuario de Agent a Manager.
Esta prueba la estás haciendo mal. Cuando recuperas de la base de datos,
el ORM mapea el objeto a una instancia de la clase Agent en función del
campo type recuperado. Una vez tienes esta variable apuntando a esa
clase, por mucho que le cambies los valores de sus atributos, no vas a
conseguir que la clase cambie, asà que te va a parecer que no ha
cambiado nada cuando realmente en la base de datos sà ha cambiado.
En cuanto a que en la db no ves el valor cambiado, a veces pasa que se
entra desde la consola en modo sandbox de forma que todo lo que cambias
se ejecuta en una transacción que se hace rollback al salir, y por eso
en este caso no verÃas cambios al entrar por phpmyadmin usando otra
conexión.