مشكلة تزامن الحقول المخصصة

نواجه أحيانًا مشكلات في التزامن مع الحقول المخصصة.

المثال هو معالج ويب هوك يقوم بما يلي:

user_id = params[:externalUserId].split('-')[1]
user = User.find_by(id: user_id)
raise Discourse::NotFound unless user

... قم بالكثير من المعالجة ...

user.custom_fields[:myfield] = params[:whatever]
user.save_custom_fields

عندما يتم تشغيل اثنين من خطافات الويب بسرعة متتالية لنفس المستخدم، فإننا في بعض الأحيان نحصل على صف مكرر. في المرة التالية التي يتم فيها الوصول إلى الحقول المخصصة للمستخدم، تبدو كالتالي:
{"myfield"=>["value", "value"]}

أرى أن (user_id, name) مُعرَّف كفهرس ولكن ليس فريدًا على user_custom_fields.

ما هو أفضل نمط لمنع حدوث ذلك؟

4 إعجابات