tengo una duda a la hora de crear un módelo User y un modelo Profile. El
tema
es que un usuario siempre tiene un perfil pero un perfil no tiene porque
tener un usuario. Quiero guardar en el modelo Profile lo que me llegue
de un
formulario de contacto y si un día ese registro en el Profile se crea una
cuenta asociarlo al modelo User.
La duda es como saber si un usuario nuevo tiene un perfil creado.
¿Teniendo
dos campos iguales en los dos modelos? ¿Crear un usuario desactivado al
crear
el perfil? ¿Cuál sería la mejor forma de hacerlo?
La duda es como saber si un usuario nuevo tiene un perfil creado.
supongamos que tienes la clase User y la clase Profile que ambas heredan
de ActiveRecord::Base y que en el modelo relacional dentro de Profile
tienes una FK que apunta al id del usuario.
Si en la clase Profile creas un belongs_to :usuario y en la clase
Profile
creas un has_one :profile se creará la relación 1-1.
una buena manera de comprobar si existe un usuario de el perfil seria
navegar a través de la
relación.
Creamos una instancia de Usuario llamemosle user. Por ejemplo
user=User.find(1)
user.profile.nil? da true significa que hay profile.
tengo una duda a la hora de crear un m�delo User y un modelo Profile. El
tema
es que un usuario siempre tiene un perfil pero un perfil no tiene porque
tener un usuario. Quiero guardar en el modelo Profile lo que me llegue
de un
formulario de contacto y si un d�a ese registro en el Profile se crea una
cuenta asociarlo al modelo User.
La duda es como saber si un usuario nuevo tiene un perfil creado.
�Teniendo
dos campos iguales en los dos modelos? �Crear un usuario desactivado al
crear
el perfil? �Cu�l ser�a la mejor forma de hacerlo?
Tu duda me supongo es saber como enlazar estos dos objetos cuando el
usuario se da de alta, y por ello necesitas identificarlos de alguna
manera (usando el email, según comentas más abajo).
Creo que tienes dos posibilidades bastante claras:
Usar un campo común que los identifique, como el email (si es que es
único entre todos los usuarios) y a partir de ahà enlazarlos usando una
clave ajena tipo user_id en la tabla profiles.
La otra vÃa es que elimines el modelo Profile y en vez de guardar la
información de “pre-usuario” en Profile la guarde en User, asà ya tienes
pre-creado el usuario y no duplicas la información. Lo único es que
deberÃas modificar User para que puedas crear objetos en estado “no de
alta” y asà poder diferenciar cuales son perfiles y cuales son usuarios
dados de alta finalmente.