Impossible de créer de nouveaux comptes en raison d'un ancien plugin de champ utilisateur multi-sélection

Il a de la chance que je sois juste à côté :wink:.

Le format des données était intéressant - il se présentait sous deux formes différentes qui ont changé un jour. Elles ont commencé comme suit :

this
that

Et un jour, elles ont soudainement changé pour :

this,that

J’ai fait de la magie de tableur un peu moche pour transformer les données afin qu’elles correspondent aux nouveaux champs multisélection (comme ci-dessus). Malheureusement, le script ne peut pas (encore) gérer la sélection multiple. Une PR, quelqu’un ?

Bien que je puisse contourner / pirater pour faire le travail, je pense que :

1ère passe : tous les utilisateurs avec une seule entrée en utilisant le script existant
2ème passe : tous les utilisateurs avec plusieurs entrées en utilisant un script piraté qui force de nouvelles lignes.

plus tard…
Mon plan astucieux a fonctionné.

Voici le script piraté pour la 2ème passe :

# frozen_string_literal: true

require "csv"
desc "Import user fields"
task "multi_user_fields:import_csv", [:filename] => [:environment] do |_, 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 - quelle serait la facilité de mettre à jour le script réel pour gérer les champs de sélection multiple pour les autres qui manipuleront les UCF à l’avenir ?

4 « J'aime »