سلوك غير متناسق في فئة UserUpdater

@eviltrout

خطوات إعادة الإنتاج:

  1. دعنا ننشئ حقل مستخدم ولديه المعرف 1.
  2. قم بتشغيل السطر الثاني من الكود أدناه مرتين.

الحالة 1

up = UserUpdater.new(Discourse.system_user, User.find(1))
up.update({:custom_fields=>{:user_field_1=>
4 إعجابات

يبدو أن هذا خطأ صحيح ويجب إصلاحه، شكرًا لتبليغك عنه!

4 إعجابات

يختصر تحليلي إلى ما يلي.

# الحالة 1
u1 = User.find(1)
u1.custom_fields[:user_field_1] = "abc"
u1.save

# الحالة 2
u1.custom_fields["user_field_1"] = "abc"
u1.save

في الحالة 1، يتم إنشاء كائن UserCustomField جديد مع كل استدعاء لـ u1.save.

في الحالة 2، يتم حذف جميع كائنات UserCustomField التي تحمل الاسم ‘user_field_1’ من قاعدة البيانات ما عدا المحدد.
Screenshot 2020-08-20 at 11.56.49 AM

بشكل عام، يتم التعامل مع نسختي symbol و string لنفس المفتاح بشكل مختلف في مزيج HasCustomFields.

إعجاب واحد (1)

حسنًا، قمت بذلك. إليك طلب السحب (PR) الذي يحل المشكلة

7 إعجابات

حسنًا، هذا مدمج.

3 إعجابات