9 Stimmen

Verwendung von Devise für zwei verschiedene Modelle, aber das gleiche Anmeldeformular

Ich habe hier viele ähnliche Fragen gesehen, aber nichts, was meinem Bedarf entspricht.

Ich bin ein ziemlich Erfahrung Schienen-Entwickler, aber dieses neue Projekt ist mein erstes Mal mit Rails 3 und Devise (ich bin normalerweise auf authlogic).

Meine App hat zwei verschiedene Modelle, die ich über Devise authentifizieren möchte.

Erstens: Benutzer ist nur ein Standard-Benutzermodell Zweitens, Business ist ähnlich wie ein Benutzer (es hat auch eine E-Mail-Adresse-Spalte), aber es hat zusätzliche Informationen in der Datenbank (Adresse, Telefonnummer, etc..)

Ich möchte sie beide über das gleiche Anmeldeformular anmelden können. Sobald sie eingeloggt sind, werden ihnen natürlich unterschiedliche Informationen angezeigt, je nachdem, welche Art von Modell sich eingeloggt hat.

Es mag relevant sein oder auch nicht, dass ich vorhatte, OmniAuth zu verwenden, um Nutzern (aber wahrscheinlich nicht Unternehmen) die Möglichkeit zu geben, sich über Facebook anzumelden bzw. zu registrieren.

Merci !

Wie lässt sich das am einfachsten bewerkstelligen?

5voto

Braden Becker Punkte 2479

Ich denke, der einzige Weg, dies zu handhaben wäre, um Ihre eigenen benutzerdefinierten Anmeldeformular und Controller, dass die Art der Benutzer bestimmt und dann melden Sie sie richtig sein. Ich würde einen Ansatz empfehlen, wie Mark der Einfachheit halber erwähnt hat (schauen Sie sich etwas an wie CanCan um Rollen zu verwalten).

Ein weiteres potenzielles Problem bei mehreren Benutzermodellen besteht darin, dass Sie mehrere Versionen aller Devise-Hilfsmethoden haben werden. Also für current_<resource> y <resource>_signed_in? ihr würdet haben current_user , current_business_user , user_signed_in? y business_user_signed_in? . Dann müssten Sie entweder Ihre eigenen Versionen dieser Methoden implementieren oder Sie müssten beide Versionen überall, wo Sie sie verwenden, überprüfen.

2voto

cactis Punkte 205

Können Sie dies in application_controller tun?

current_user = current_resource_a || current_resource_b

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X