لدي جدول ‘أعضاء’ في قاعدة بيانات تطبيقي، حيث أقوم بتخزين معلومات خاصة بالتطبيق لمجموعة فرعية من الأعضاء. أحد الأعمدة هو discourse_user_id. أود عرض رابط لملف العضو الشخصي في ديسكورش. هل من الممكن فعل ذلك باستخدام معرف المستخدم فقط؟
لا أقوم بتخزين discourse_user_name لأن المستخدم قد يغيره، وعندها سأضطر للقلق بشأن مزامنتها.
الطريقة الوحيدة التي تتبادر إلى ذهني هي إرسال طلب إلى واجهة برمجة التطبيقات (API) إلى /admin/users/<user-id>.json للحصول على اسم المستخدم، لكن هذا سيتطلب عددًا كبيرًا من الطلبات عند عرض صفحة الفهرس، حيث أقوم بسرد الأعضاء مع روابط لملفاتهم الشخصية.
الشيء الوحيد الآخر الذي يخطر ببالي هو بناء إضافة لإضافة مسار جديد، لكن هذا يبدو جهدًا كبيرًا لموقف أتوقع أنني لست أول من يسأل عنه، لذا أردت التحقق مما إذا كانت هناك حل آخر موجود بالفعل؟
إحدى الأفكار هي وضع معرف خارجي في سجل المستخدم، ثم يمكنك استخدام /by-external/:external_id. والفكرة الأخرى هي استخدام ويب هوك لإخطار قاعدة البيانات الخارجية الخاصة بك في حال تغييرهم لاسم المستخدم. وثالثة هي ببساطة تعطيل تغيير أسماء المستخدمين. ومن خلال نظرة سريعة على discourse/config/routes.rb، لا أرى أي مسار يستخدم user_id.
شكرًا لك @pfaffman، هذا مفيد جدًا. أعتقد أن استخدام معرف خارجي سيكون مثاليًا، حيث أنه يحل أيضًا مشكلة أخرى—الربط في الاتجاه المعاكس.
لكن بعد التصفح في وثائق الـ API وعميل REST، لا أرى كيفية تحديث هذا الحقل. هل يمكنني استخدامه دون تفعيل SSO؟ (وحتى لو قمت بتفعيل SSO، هل سأتمكن من تحديثه برمجياً؟)