2012-12-08 7 views
8

In meiner Rails-Anwendung verwende ich devise gem für die Verwaltung von Benutzern. Ich benutze mobile_fu gem für die Benutzer von verschiedenen Benutzern zu trennen.Wie melde ich mich automatisch mit dem Gerät nach der Registrierung an?

Was will ich hier erreichen ist:

  1. Wenn ein Benutzer von einem mobilen Gerät meiner Seite öffnet werde ich seinen MSISDN Nummerlesekopf extrahiert es bereits
  2. erfolgt Wenn die MSISDN Zahl in einem fällt bestimmten Serien, dann möchte ich diesen Benutzer automatisch auf meiner Website anmelden, damit er das Formular sign_in nicht ausfüllen muss.

Wie kann ich das erreichen?

Antwort

4

Sie müssen:

1), um den Benutzer in die Website für devise registrieren. 2) Melden Sie sich beim Benutzer an.

Für Option 1, Sie so etwas wie zu tun:

user = User.find_by_msisdn(params[:msisdn]) 
if user.nil? 
    user = User.create(field_1: value1, field_2: value2)  
end 

sign_in(user) 

redirect_to after_sign_in_path(user) 

Die Dinge im Auge zu haben, die erste Zeile versucht, für den Benutzer zu finden, in der zweiten Zeile, wenn es den Benutzer nicht finden kann, es erstellt den Benutzer sofort, dann sign_in dem Benutzer und schließlich leitet er den Benutzer dorthin, wohin er nach dem Login gehen soll.

+0

Ich habe dies versucht, aber wenn auf eine andere Seite umgeleitet wird, ist der Benutzer nicht mehr angemeldet. Gleich nach sign_in (user) gibt es Daten in current_user und user_signed_in? gibt wahr zurück. User_signed_in? gibt false zurück, wenn auf verschiedene Seiten der Site verwiesen wird. Irgendwelche Ideen? – user2974739

+0

user_session ist leer. Ich nehme an, das hat etwas damit zu tun. Irgendwelche Vorschläge zum Einrichten der Benutzersitzung? – user2974739

+1

'after_sign_in_path' wird in' after_sign_in_path_for' umbenannt. – artificis

Verwandte Themen