Gibt es eine Möglichkeit, Ihre Benutzerinformationen in großen Mengen zu aktualisieren? Ich möchte die Benutzerdaten-Update-Informationen wie Name usw. exportieren und dann wieder in die Datenbank importieren, um die vorhandenen Informationen zu aktualisieren.
Ich kann eine CSV-Datei aus dem Admin-Panel herunterladen, aber ich frage mich, wie ich diese Informationen wieder auf Discourse bekomme.
Ich habe jeden Benutzer auf der Admin-Seite (Namensfeld) mühsam aktualisiert, aber wenn ich zurückgehe, erscheinen die Updates leer.
Der beste Weg ist wahrscheinlich mit der API, obwohl Sie es auch mit einem Skript tun könnten, das Ihre CSV-Datei liest und sie in Rails aktualisiert.
Hier ist eine Rake-Aufgabe, die benutzerdefinierte Benutzerfelder aktualisiert und modifiziert werden könnte, um andere Dinge zu aktualisieren:
require "csv"
desc "Import user fields"
task "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 ucf
if val != ucf.value
puts "Updating UCF: #{row['user_id']} Name: #{name}, Found #{ucf.value}}"
ucf.update(value: val)
end
else
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
end
Nachdem Sie es modifiziert haben, würden Sie es in /var/www/discourse/lib/tasks innerhalb des Containers platzieren und rake user_fields:import_csv["IHRE-CSV.csv"] ausführen.
Wenn Sie Hilfe bei der Anpassung für Ihre Bedürfnisse benötigen, senden Sie mir Ihre CSV-Datei (oder zumindest die Kopfzeilen und die ersten paar Zeilen) per E-Mail, und ich werde Ihnen einen Kostenvoranschlag unterbreiten.
Bitte beachten Sie, dass es derzeit nur benutzerdefinierte Felder für Benutzer verarbeitet – keine Felder wie Name.
Das lag wahrscheinlich daran, dass Sie am Ende jeder Bearbeitung nicht auf Speichern geklickt haben. Es ist eine UI-Sache, die eines Tages hoffentlich behoben wird!!
Funktioniert es auch mit Spalten, die Leerzeichen enthalten, oder sollten die Felder Unterstriche haben? Außerdem ist die erste Spaltenüberschrift beim Exportieren id und nicht user_id. Ist das ein Problem?
Das Skript ist nicht dafür ausgelegt, den Download der Benutzerdaten zu verarbeiten. Sie müssen mehrere Spaltenüberschriften ändern. Außerdem aktualisiert das Skript in seiner jetzigen Form nur Elemente, die in der Tabelle custom_fields gespeichert sind.