Verwenden von Devise für zwei verschiedene Modelle, aber dasselbe Anmeldeformular

8

Ich habe hier viele ähnliche Fragen gesehen, aber nichts, was zu meinem Bedürfnis passt.

Ich bin eine ziemlich erfahrene Rails-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.

Eins, Benutzer ist nur ein Standardbenutzermodell Zwei, 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 Login-Formular anmelden können. Dann werden sie natürlich, sobald sie eingeloggt sind, verschiedene Informationen erhalten, abhängig davon, welcher Typ von Model sich angemeldet hat.

Es mag relevant sein oder nicht, dass ich OmniAuth verwenden wollte, um es Benutzern (wenn auch wahrscheinlich nicht Unternehmen) zu ermöglichen, sich über Facebook anzumelden.

Danke!

Was ist der einfachste Weg, dies zu tun?

    
goddamnyouryan 25.03.2011, 20:45
quelle

2 Antworten

5

Ich denke, der einzige Weg, dies zu bewältigen, wäre, dass Sie Ihr eigenes benutzerdefiniertes Anmeldeformular und einen Controller haben, der den Benutzertyp bestimmt und sie dann korrekt anmeldet. Ich würde einen Ansatz wie das, was zur Vereinfachung erwähnt wurde, empfehlen (werfen Sie einen Blick auf etwas wie CanCan , um Rollen zu verwalten).

Ein weiteres mögliches Problem mit mehreren Benutzermodellen ist, dass Sie mehrere Versionen aller Hilfehilfsmethoden haben. Für current_<resource> und <resource>_signed_in? hätten Sie current_user , current_business_user , user_signed_in? und business_user_signed_in? . Dann müssten Sie entweder Ihre eigenen Versionen dieser Methoden implementieren oder Sie müssten beide Versionen überall dort überprüfen, wo Sie sie benutzt haben.

    
Braden Becker 26.03.2011, 03:26
quelle
2

Können Sie dies in application_controller tun?

aktueller_Benutzer = aktuelle_Ressource_a || current_resource_b

    
cactis 22.11.2011 14:44
quelle