他很幸运我正好就在附近
。
数据格式很有趣——它有两种不同的形式,有一天改变了。它们最初是这样的:
this
that
有一天,它们突然变成了:
this,that
我做了一些糟糕的电子表格魔法来将数据转换为新的多选字段(如上所示)。不幸的是,脚本(还)无法处理多选。有人愿意提交一个拉取请求吗?
虽然我可以变通/破解它来完成工作,但我认为:
第一遍:所有具有单个条目的用户使用现有脚本
第二遍:所有具有多个条目的用户使用一个破解的脚本,强制创建新行。
稍后……
我的狡猾计划奏效了。
这是第二遍的破解脚本:
# 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 - 更新实际脚本以处理多选字段对于将来修改 UCF 的其他人来说有多容易?