Schienen - wie man Code ‚zu können gehören?‘
-
21-09-2019 - |
Frage
Ich arbeite an einer Rails-Anwendung, die Informationen über eine Gruppe von Leuten enthalten wird. Es gibt zwei Anwendungsfälle:
- Ein Administrator betritt und unterhält Profil einer Person
- Die Person kann entscheiden, um sich zu registrieren, melden Sie sich an, und halten ihr eigenes Profil
Ich versuche, die Beziehung zwischen dem Profil zu erarbeiten und dem Benutzer. Gerade jetzt, es ist, dass profile belongs_to :user
und user has_one :profile
.
Aber diese Brüche, weil einige Profile noch keinen Benutzer haben - sie sind vom Administrator gepflegt. In diesem Fall ist die user_id
Spalte in profiles
null, verbinden sich die fehlschlägt, und die Seite wird nicht geladen. ++
Wie kann ich die Einrichtung eines "möglicherweise belongs_to" Art von Beziehung?
++ (Eigentlich ist es aufkommt leer, ohne Fehler angezeigt, und development.log
hat keine Fehler entweder, aber ich kann sehen, dass es nicht alle Abfragen Finishing es für ein Profil hat, das hat ein Benutzer. Wenn jemand weiß, wie ich stattdessen eine hilfreiche Fehlermeldung erhalten kann, die auch groß sein würde.)
Lösung
Das ist der richtige Weg, es zu tun. belongs_to
nicht daran hindert, null
Werte, und das klingt wie das, was Sie wollen.
Die „Seite“ für ein Profil, das, gehört noch nicht zu einem Benutzer möglicherweise nicht so viele Fragen haben, denn es gibt keine Notwendigkeit (oder Weg) für das Profil der Benutzer-Tabelle abzufragen.
Sie sollten profile.user
für nil
überprüfen und Ihre Ansichten entsprechend präsentieren.
Andere Tipps
Wenn ein Profile
wirklich zu einem User
gehört, dann sollte es nicht immer null sein (so wie es keinen Sinn macht, einen Engine
ohne Car
zu betrachten es angebracht ist). Sie müssen also die Profile.belongs_to :user
Vereinigung löschen.
Nun sollten Sie frei bearbeiten Profiles
der Lage sein und sie einfach, wenn sie bereit sind, zu einem User
befestigen. Aber Sie haben ein anderes Problem:
Die Person kann entscheiden, um sich zu registrieren, melden Sie sich an, und halten ihr eigenes Profil
Wie funktioniert das System zuverlässig identifizieren, welche bereits erstellten Profil zu einem bestimmten Benutzer gehört, für die noch kein eigenes Profil? Das ist eine Frage des Designs Sie aussortieren müssen.