古いマルチセレクトユーザーフィールドプラグインにより、新規アカウントを作成できなくなりました

彼はすぐ近くにいるので幸運です:wink:。

データ形式は興味深いものでした。2つの異なる形式で、ある日変更されました。最初は次のようになりました。

this
that

そしてある日、突然次のように変更されました。

this,that

新しいマルチセレクトフィールド(上記)のようにデータを変換するために、醜いスプレッドシートマジックを使いました。残念ながら、このスクリプトは(まだ)マルチセレクトを処理できません。PRは誰か?

回避策/ハックで対応できますが、次のように思います。

1回目のパス:既存のスクリプトを使用して単一のエントリを持つすべてのユーザー
2回目のパス:ハックされたスクリプトを使用して複数のエントリを持つすべてのユーザー。これにより新しい行が強制されます。

後で…
私の巧妙な計画はうまくいきました。

これは2回目のパス用のハックされたスクリプトです。

# 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