由于旧的多选用户字段插件,无法创建新帐户

他很幸运我正好就在附近 :wink:

数据格式很有趣——它有两种不同的形式,有一天改变了。它们最初是这样的:

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 的其他人来说有多容易?

4 个赞