Ich möchte einen Benutzer basierend auf einem Parameter umleiten, die sie verwendet, um sign_in, aber ich sehe keinen Weg zu.Benutzer umleiten basierend auf sign_in params
Benutzer Zeichen von /users/sign_in/?demo=car
Benutzer :: SessionsController < Devise :: SessionsController
def create
super
# get the params
if params[:demo] == car
# redirect_to where_ever
end
end
Offensichtlich, dass nicht funktionieren würde.
Die korrekte Umleitung:
Application < Action :: Base
def after_sign_in_path_for(resource)
# I must have params[:demo] here. How?
if params[:demo] == car
# go elsewhere
else
request.env['omniauth.origin'] || stored_location_for(resource) || root_path
end
end
Ein sehr langer Weg würde die Benutzer-Spalte mit den params dann in after_sign_in_path_for
ich überprüfen Sie die current_user
Spalte für die Aktualisierung Params dann umleiten. Wenn der Benutzer nur von der ursprünglichen URL kam, aktualisiere ich die Spalte auf ""
. Zeitverschwendung, oder?
Sie können einen versteckten Eingang zu Ihrem Login-Formular hinzufügen und seinen Wert mit 'params füllen [: Demo]'. Nach dem Absenden des Formulars (Einloggen), wird der Wert von 'params' zugänglich sein. –
Ich muss immer noch diese Parameter haben, nachdem der Benutzer angemeldet ist. Ich denke, ich muss das Benutzermodell aktualisieren, um zu tun, was ich will. – Sylar
Ich habe die Methode vorgestellt, den Parameter in die Methode 'after_sign_in_path_for' weiterzuleiten. Sie können es dann in der Datenbank speichern oder in der Sitzung speichern. Es hängt von deinem Fall ab;) –