Ele tem sorte que estou aqui perto
.
O formato dos dados era interessante - estava em duas formas diferentes que mudaram um dia. Elas começaram como:
this
that
E um dia elas mudaram repentinamente para
this,that
Eu fiz uma mágica feia com a planilha para transformar os dados em como os novos campos de seleção múltipla são (como acima). Infelizmente, o script não consegue (ainda) lidar com seleção múltipla. Alguém quer fazer um PR?
Embora eu possa contornar / hackear para fazer o trabalho, eu acho:
1ª passagem: todos os usuários com uma única entrada usando o script existente
2ª passagem: todos os usuários com várias entradas usando um script hackeado que força novas linhas.
mais tarde…
Meu plano engenhoso 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 de seleção múltipla para outros que mexerem com UCFs no futuro?