لا يمكن إنشاء حسابات جديدة بسبب plugin قديم لحقل المستخدم متعدد الاختيارات

إنه محظوظ لأنني قريب جدًا :wink:.

كان تنسيق البيانات مثيرًا للاهتمام - كان في شكلين مختلفين تغيرا في يوم واحد. بدأت كالتالي:

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) في المستقبل؟

4 إعجابات