Non è più possibile creare nuovi account a causa del vecchio plugin multi-select user field

È fortunato che io sia qui vicino :wink:.

Il formato dei dati era interessante: era in due forme diverse che sono cambiate un giorno. Inizialmente erano:

this
that

E un giorno sono improvvisamente cambiati in

this,that

Ho fatto un po’ di brutta magia con i fogli di calcolo per trasformare i dati in come sono ora i nuovi campi multiselect (come sopra). Sfortunatamente, lo script non può (ancora) gestire il multiselect. Qualcuno vuole fare una PR?

Anche se posso aggirare / hackerare per fare il lavoro, penso:

1° passaggio: tutti gli utenti con una singola voce usando lo script esistente
2° passaggio: tutti gli utenti con voci multiple usando uno script hackerato che forza nuove righe.

più tardi…
Il mio piano astuto ha funzionato.

Questo è lo script hackerato per il 2° passaggio:

# 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 - quanto sarebbe facile aggiornare lo script effettivo per gestire i campi multiselect per altri che modificheranno gli UCF in futuro?

4 Mi Piace