2016-08-10 2 views
0

Ich entwerfe eine App, bei der der Benutzer sich mit dem Devise-Juwel (E-Mail + Passwort) anmeldet.Rails devise mit mehreren Feldern im Anmeldeformular

Dann habe ich ein Formular, um andere persönliche Informationen zu erfassen, und da ich so etwas wie eine soziale Dating-App erstellen, muss ich Benutzer mit diesen Daten übereinstimmen.

Meine Frage basiert auf einem Designproblem, weil ich ein Model mit Devise erstellt habe und dann eine andere Datenbank verwende, um die Daten aus dem Formular nach der Anmeldung zu speichern.

Haben Sie schlagen eine gegenseitige Spalte zwischen Modell von Einfallsreichtum und die neue Datenbank, vielleicht Id oder E-Mail mit, da sie einzigartig sind beide

OR

für diese Informationen im Anmelde Fordern Sie durch Überschreiben devise Verwenden eines benutzerdefinierten Controllers?

Was gilt als Best Practice? Denken Sie daran, dass ich zwei Arten von Benutzern habe, es ist nicht männlich/weiblich, es ist etwas anderes, daher zwei Datenbanken sind hilfreich, eine andere von Gerät so insgesamt 3.

Antwort

1

Ich denke, der beste Weg zu gehen wäre, das Devise-Modell für die Benutzer zu behalten und dann ein anderes Modell zu erstellen (zum Beispiel "Profil"), wo Sie alle "persönlicheren" Daten für jeden Benutzer speichern können.

Dann können Sie entweder bitten, dass der Benutzer diese Daten über ein neues Formular ausfüllt, oder Sie können verschachtelte Felder im Anmeldeformular erstellen, wo der Benutzer sofort einige Informationen eingeben kann.

+0

Können Sie Beispielcode angeben, wie Sie Felder und Beziehungen kombinieren können? Ich benutze Devise mit einem Modell namens Users, und wie kann ich die ID oder die E-Mail, die beide eindeutig sind, mit einer anderen Tabelle verknüpfen, die persönliche Informationen über den Benutzer enthält. Muss ich diese Tabelle mit einem anderen Namen benennen, wie zum Beispiel neue Benutzer oder aktive Benutzer usw.? –

+0

Nehmen wir an, Sie erstellen ein neues Modell namens Profile. In Ihrer Profilmigrationsdatei fügen Sie eine Spalte "user_id" hinzu. Dann fügen Sie in Ihrem Benutzermodell eine Zeile 'has_one: profile' hinzu und in Ihrem Profilmodell fügen Sie' belongs_to: user' hinzu. Wenn Sie nun ein Profil erstellen, übergeben Sie die Benutzer-ID in den Parametern. Nach dem Speichern können Sie 'user.profile' ausführen und das Profil für diesen Benutzer abrufen. Oder sogar 'profile.user'. Ich würde vorschlagen, diesen Railscast für verschachtelte Formulare zu beobachten: http://railscasts.com/episodes/196-nested-model-form-part-1 Viel Glück! :) – Tashows

Verwandte Themen