So fügen Sie einen Rückruf nach der Registrierung bei Rails3 und Devise hinzu

8

So fügen Sie einen Rückruf hinzu, um ein Konto für den registrierten Benutzer zu erstellen.

Gerätedateien (registrations_controller.rb) befinden sich unter controllers / devise Mein Benutzermodell hat die Beziehung has_many: accounts (und das account-Modell hat gehört zu: user)

Zuerst weiß ich nicht, wo ich den Callback hinzufügen soll (welche Datei?)

Wie erstelle ich dann automatisch ein neues Konto mit der richtigen Benutzer-ID des registrierten Benutzers?

Vielen Dank im Voraus.

    
Olivier 15.01.2011, 23:33
quelle

4 Antworten

16

Sie können den Registrierungs-Controller des Geräts überschreiben und Callback hinzufügen, um ein Konto mithilfe von Filtern zu erstellen. Denken Sie daran, die Datei registrations_controller.rb

zu nennen %Vor%

dann in Ihrem routes.rb sagen Gerät zu übersteuerten Controller für die Registrierung verwenden

%Vor%     
Naveed 27.04.2011 09:02
quelle
1

Hier ist ein Thread in der Google-Gruppe, der Ihre Frage beantwortet:

Ссылка

Im Grunde empfiehlt es sich, Ihrem Benutzermodell einfach eine "after_create" -Methode für Standard-Rails hinzuzufügen, um den benötigten Code auszuführen.

    
zippy 20.01.2011 03:02
quelle
0

Ich benutze beide Ansätze.

after_create im Modell, um zugehörige Daten zu erstellen und %Code% Im RegistrationsController (wie @naveed)

weil ich im after_create callback die Fehlerausnahme erhalten habe after_filter :send_notification_mailer, only: :create

Beim Senden mit Active Job die Bestätigungs-E-Mail im Hintergrund mit sidekiq, weil der Benutzer sie manchmal nicht erhalten hat.

    
heriberto perez 01.05.2016 15:36
quelle
0

Öffnen Sie zuerst Ihre Version von devise mit bundle open devise . Schau dir die App / controllers / devise / registrations_controller.rb an. Sie werden wahrscheinlich eine Methode sehen, die in der create-Methode aufgerufen wird, wenn sich ein Benutzer erfolgreich registriert. Für meine Version (3.5.2) ist es sign_up .

In Routen benötigen Sie

%Vor%

Sie können Ihren eigenen RegistrationsController wie folgt definieren:

%Vor%     
muirbot 18.09.2016 06:12
quelle