Ich verwende Devise 4.2.1 mit Rails 5.1. Unsere App verwendet MixPanels JavaScript-Bibliothek, die anonymen Website-Besuchern eine eindeutige ID gibt, wenn sie sich umsehen.Weitergabe von beliebigen Parametern bei der Benutzerregistrierung mit Devise
Wenn ein Benutzer ein Konto erstellt, verknüpfen wir seine anonyme ID mit seiner bekannten Benutzer-ID in unserer Datenbank. Wir tun dies, indem Sie auf dem Anmeldeformular der Benutzer über den anonymen mixpanel_id
in einem versteckten Feld einfügen, und es zusammen mit den anderen Anmeldedaten zu ersinnen Registrierungen Controller Posting:
= vertical_form_for(resource, as: resource_name, url: registration_path(resource_name) do |f|
= f.input :name
= f.input :email
= f.input :password
= f.input :mixpanel_id, as: :hidden, input_html: { value: '' }
:javascript
after_load_once(function() {
mixpanel_promise.then(function (mixpanel) {
var id = mixpanel.get_distinct_id();
$('#user_mixpanel_id').val(id);
});
});
Dann haben wir das Verfahren in Devise erstellen außer Kraft setzen:
class RegistrationsController < Devise::RegistrationsController
def create
super
if resource.valid?
$mixpanel.alias(resource.id, params[:user][:mixpanel_id]) if params[:user][:mixpanel_id]
end
end
end
Dies scheint für uns in Ordnung zu sein. Die Leute sind in der Tat verbunden und wir können ihr Verhalten direkt auf der Website verfolgen, obwohl ich ein merkwürdiges Verhalten bemerkt habe, bei dem Leute nicht richtig verknüpft wurden. Während heute die Untersuchung bemerkte ich etwas in den Protokollen: Unpermitted parameter: :mixpanel_id
ich in starke Parameter gesucht, aber da :mixpanel_id
auf dem Benutzer keine gespeicherte Attribut ist, ich bin nicht sicher, wie ich es als zulässig Parameter hier hinzufügen:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
Legende! Vielen Dank. Das habe ich vermisst. –