Importieren eines benutzerdefinierten Benutzerprofilfelds aus alter Forensoftware

Ich möchte ein benutzerdefiniertes Feld zu einem Import-Skript hinzufügen. Das Feld ist ein Dropdown-Menü.

Ich bin auf diesen Beitrag gestoßen, der beschreibt, wie man das Feld initial als Teil des Importvorgangs erstellt:

Es hat funktioniert, und das Feld wurde mit den richtigen Dropdown-Optionen korrekt erstellt.

Der Code, den ich verwende, um den Wert dieses Feldes zu importieren, funktioniert jedoch nicht. Hier ist mein aktueller Ansatz:

  post_create_action: proc do |newuser|
    if user["legacy_custom_field"].is_a?(String)
      newuser.custom_fields = {"user_field_#{@legacy_field.id}" => user["legacy_custom_field"]}
    end
  end

Das Feld, das ich importiere, ist ein String, sodass der Code eigentlich ausgeführt werden sollte. Wenn ich den Import jedoch starte, wird für dieses Feld nichts importiert.

Der Wert von user[“legacy_custom_field”] in diesem Beispiel ist identisch mit den für dieses Feld erstellten Optionen, aber ich validiere die importierten Daten nicht gegen die Dropdown-Optionen. Muss ich das tun? Oder sollte ich die Daten anders hinzufügen, da es sich um die Auswahl eines Dropdown-Menüs handelt? Als ich die Tabelle user_custom_fields untersucht habe, scheint dieser Text ohnehin als einfacher String gespeichert zu werden.

Was übersehe ich? Vielen Dank im Voraus, falls jemand helfen kann! :+1:

Ich bin mir nicht sicher, was mit deinem Code los ist. Vielleicht solltest du den Ning-Importer anschauen, da dieser benutzerdefinierte Felder verwendet. Ich würde nach dem if ein puts hinzufügen, um zu prüfen, ob es jemals ausgeführt wird.

Du musst vielleicht newuser.save! aufrufen, aber ich glaube nicht, dass das erforderlich sein sollte.

Es war so einfach, wie das Hinzufügen von newuser.save! nach dem bestehenden Code.

Danke für den Tipp! Funktioniert jetzt einwandfrei.

@pfaffman, das ist seltsam. Hast du schon einmal Probleme damit gehabt, dass newuser.save! andere Bereiche eines Import-Skripts deaktiviert, wenn du es zu früh aufrufst? Beendet das etwas, das neu initialisiert werden muss, damit der Rest des Skripts funktioniert?

Ich habe festgestellt, dass Avatare nicht mehr importiert wurden, sobald ich diese Zeile hinzugefügt habe. Wenn ich sie jedoch auskommentiere, werden die Avatare wieder problemlos importiert. Das war buchstäblich die einzige Änderung, die ich vorgenommen habe, um das Avatar-Problem zu beheben. Dabei handelt es sich um völlig unterschiedliche Abschnitte des Skripts. :thinking:

Könnte das eventuell damit zusammenhängen, dass du newuser.save! anstelle von newuser.save ohne das abschließende „!