Neue Konten können wegen altem multi-select user field plugin nicht mehr erstellt werden.

Er hat Glück, dass ich gleich um die Ecke bin :wink:.

Das Datenformat war interessant – es lag in zwei verschiedenen Formen vor, die sich eines Tages änderten. Sie begannen als:

this
that

Und eines Tages änderten sie sich plötzlich zu

this,that

Ich habe einige hässliche Tabellenkalkulations-Magie angewendet, um die Daten in das Format der neuen Mehrfachauswahlfelder zu transformieren (wie oben). Leider kann das Skript (noch) keine Mehrfachauswahl verarbeiten. PR jemand?

Obwohl ich es umgehen / hacken kann, um die Aufgabe zu erledigen, schätze ich:

  1. Durchlauf: Alle Benutzer mit einem einzelnen Eintrag unter Verwendung des vorhandenen Skripts
  2. Durchlauf: Alle Benutzer mit mehreren Einträgen unter Verwendung eines gehackten Skripts, das neue Zeilen erzwingt.

später…
Mein raffinierter Plan hat funktioniert.

Dies ist das gehackte Skript für den 2. Durchlauf:

# frozen_string_literal: true

require "csv"
desc "Import user fields"
task "multi_user_fields:import_csv", [:filename] => [:environment] do |_task, args|

  puts "Filename: #{args[:filename]}"
  data = CSV.read(args[:filename], headers: true)

  data.each_entry do |row|
    puts "doing row."
    row.to_h.each do |x|
      user_id = row["user_id"]
      if x.first == "user_id"
        u = User.find(user_id)
        puts "Got user: #{u.username}"
      else
        name = x.first
        val = row[x.first]
        ucf = UserCustomField.find_by(user_id: row["user_id"], name: name)
        if val
          puts "Creating UCF: #{row['user_id']} Name: #{name}, value: #{val}"
          UserCustomField.create(user_id: user_id, name: name, value: val)
        end
      end
    end
  end
end

@pfaffman – wie einfach wäre es, das eigentliche Skript zu aktualisieren, um Mehrfachauswahlfelder für andere zu verarbeiten, die in Zukunft mit UCFs herumspielen?

4 „Gefällt mir“