إنه محظوظ لأنني قريب جدًا
.
كان تنسيق البيانات مثيرًا للاهتمام - كان في شكلين مختلفين تغيرا في يوم واحد. بدأت كالتالي:
this
that
وفي يوم ما تغيرت فجأة إلى
this,that
لقد قمت ببعض الحيل الملتوية في جداول البيانات لتحويل البيانات إلى كيفية حقول التحديد المتعدد الجديدة (كما هو موضح أعلاه). للأسف، النص البرمجي لا يمكنه (حتى الآن) التعامل مع التحديد المتعدد. هل هناك طلب سحب (PR)؟
على الرغم من أنني أستطيع تجاوز / اختراق الأمر للقيام بالمهمة، أعتقد:
المرحلة الأولى: جميع المستخدمين الذين لديهم إدخال واحد باستخدام النص البرمجي الحالي
المرحلة الثانية: جميع المستخدمين الذين لديهم إدخالات متعددة باستخدام نص برمجي مخترق يجبر على إنشاء صفوف جديدة.
لاحقًا…
لقد نجحت خطتي الماكرة.
هذا هو النص البرمجي المخترق للمرحلة الثانية:
# 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 - ما مدى سهولة تحديث النص البرمجي الفعلي للتعامل مع حقول التحديد المتعدد للآخرين الذين يعبثون بحقول المستخدم المخصصة (UCFs) في المستقبل؟