Domanda

Sto lavorando su un'applicazione Rails che conterrà le informazioni su un gruppo di persone. Ci sono due casi d'uso:

  1. Un amministratore entra e mantiene il profilo di una persona
  2. La persona può decidere di iscriversi, accedere e gestire il proprio profilo

Sto cercando di capire il rapporto tra il profilo e l'utente. In questo momento, è che profile belongs_to :user e user has_one :profile.

Ma questo si rompe, perché alcuni profili non hanno ancora nessun utente - sono amministratore mantenuto. In tal caso, la colonna user_id in profiles è nullo, il join non riesce, e la pagina non viene caricata. ++

Come potrei istituire un "possibilmente belongs_to" tipo di rapporto?

++ (In realtà, si tratta in bianco, senza alcun errore visualizzato, e development.log non ha errori sia, ma vedo che non è terminato tutte le query fa per un profilo che ha un utente. Se qualcuno sa come posso ottenere un messaggio di errore utile, invece, che sarebbe anche bello.)

È stato utile?

Soluzione

Questo è il modo giusto per farlo. belongs_to non impedisce valori null, e questo suona come quello che vuoi.

La "pagina" per un profilo che ancora non appartiene a un utente potrebbe non avere il maggior numero di domande, perché non c'è alcuna necessità (o modo) per interrogare la tabella degli utenti per tale profilo.

Si dovrebbe controllare profile.user per nil e presentare le vostre opinioni di conseguenza.

Altri suggerimenti

Se un Profile appartiene davvero ad un User, allora non dovrebbe mai essere nulla (proprio come non ha senso prendere in considerazione un Engine senza il Car è attaccato). Quindi è necessario eliminare l'associazione Profile.belongs_to :user.

Ora si dovrebbe essere in grado di modificare liberamente Profiles e semplicemente collegarli a un User una volta che sono pronti. Ma hai un altro problema:

  

La persona può decidere di iscriversi, accedere e gestire il proprio profilo

Come funziona il sistema in modo affidabile identificare quali pre-creato il profilo appartiene a un particolare utente che non dispone ancora di un profilo? Questo è un problema di progettazione si dovrà risolvere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top