# Importieren eines benutzerdefinierten Benutzerprofilfelds aus alter Forensoftware

**URL:** https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949
**Category:** Development
**Created:** [30. April 2020 um 17:29 UTC](https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949 "2020-04-30T17:29:41Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [30. April 2020 um 17:29 UTC](https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949/1 "2020-04-30T17:29:41Z")

</div>

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:

> [@Create user field with options](https://meta.discourse.org/t/create-user-field-with-options/44427):
>
> Hi I am playing around with the imports scripts and I want to create a drop down user field. The ning script has an example of creating a text field which I have working, and I am able to add a dropdown w/ no options, but when I change the type to drop down and add an options attribute like so @interests\_field = UserField.find\_by\_name("My interests5") unless @interests\_field @interests\_field = UserField.create(name: "My interests5", description: "Do you like stuff5?", field\_t…

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! 👍

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [30. April 2020 um 18:46 UTC](https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949/2 "2020-04-30T18:46:21Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [30. April 2020 um 20:30 UTC](https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949/3 "2020-04-30T20:30:24Z")

</div>

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

Danke für den Tipp! Funktioniert jetzt einwandfrei.

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [1. Mai 2020 um 02:02 UTC](https://meta.discourse.org/t/importing-a-custom-user-profile-field-from-legacy-forum-software/149949/4 "2020-05-01T02:02:29Z")

</div>

@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. 🤔

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