No se pueden crear cuentas nuevas debido a un antiguo plugin multi-select user field.

É uma sorte eu estar aqui perto :wink:.

O formato dos dados era interessante: estava em duas formas diferentes que mudaram num dia. Começaram como:

this
that

E um dia mudaram repentinamente para

this,that

Fiz alguma “magia” feia com a folha de cálculo para transformar os dados em como os novos campos multiselect são (como acima). Infelizmente, o script não consegue (ainda) lidar com multiselect. Alguém quer fazer um PR?

Embora eu possa contornar/hackear para fazer o trabalho, acho que:

1ª passagem: todos os utilizadores com uma única entrada usando o script existente
2ª passagem: todos os utilizadores com múltiplas entradas usando um script hackeado que força novas linhas.

mais tarde…
O meu plano astuto funcionou.

Este é o script hackeado para a 2ª passagem:

# 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 - quão fácil seria atualizar o script real para lidar com campos multiselect para outros que mexem com UCFs no futuro?

4 Me gusta