Pregunta

Estoy trabajando en una aplicación Rails que contendrá información sobre un grupo de personas. Hay dos casos de uso:

  1. Un administrador entra y mantiene el perfil de una persona
  2. La persona puede decidir registrarse, iniciar sesión, y mantener su propio perfil

Estoy tratando de averiguar la relación entre el perfil y el usuario. En este momento, es que profile belongs_to :user y user has_one :profile.

Pero esto se rompe, debido a que algunos perfiles de usuario no tienen todavía - que son mantenido por el administrador. En ese caso, la columna de la user_id en profiles es nulo, la unión falla, y la página no se carga. ++

¿Cómo puede establecer un "posiblemente belongs_to" tipo de relación?

++ (En realidad, se trata arriba en blanco, la muestra ningún error y development.log no tiene ningún error, ya sea, pero puedo ver que no es terminar todas las consultas que hace por un perfil que tiene un usuario. Si alguien sabe cómo puedo recibir un mensaje de error útiles en cambio, que también sería grande.)

¿Fue útil?

Solución

Esta es la forma correcta de hacerlo. belongs_to no impide que los valores null, y esto suena como lo que quiere.

La "página" de un perfil que aún no pertenecen a un usuario podría no tener tantas preguntas, porque no hay necesidad (o forma) para consultar la tabla de usuarios para ese perfil.

Se debe comprobar profile.user para nil y presentar sus puntos de vista en consecuencia.

Otros consejos

Si un Profile realmente pertenece a una User, entonces no debe nunca ser nulo (al igual que no tiene sentido considerar un Engine sin la Car al que está conectado). Así que hay que eliminar la asociación Profile.belongs_to :user.

Ahora usted debería ser capaz de editar libremente Profiles y simplemente conectar a un User Una vez que estén listos. Pero tiene otro problema:

  

La persona puede decidir registrarse, iniciar sesión, y mantener su propio perfil

¿Cómo funciona el sistema de forma fiable a identificar qué pre-creado el perfil pertenece a un usuario particular que todavía no tiene un perfil? Eso es un problema de diseño que tendrá que resolver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top