خطوات إعادة الإنتاج:
- دعنا ننشئ حقل مستخدم ولديه المعرف
1. - قم بتشغيل السطر الثاني من الكود أدناه مرتين.
الحالة 1
up = UserUpdater.new(Discourse.system_user, User.find(1))
up.update({:custom_fields=>{:user_field_1=>
خطوات إعادة الإنتاج:
1.up = UserUpdater.new(Discourse.system_user, User.find(1))
up.update({:custom_fields=>{:user_field_1=>
يبدو أن هذا خطأ صحيح ويجب إصلاحه، شكرًا لتبليغك عنه!
يختصر تحليلي إلى ما يلي.
# الحالة 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’ من قاعدة البيانات ما عدا المحدد.
![]()
بشكل عام، يتم التعامل مع نسختي symbol و string لنفس المفتاح بشكل مختلف في مزيج HasCustomFields.
حسنًا، قمت بذلك. إليك طلب السحب (PR) الذي يحل المشكلة