تمكنت بالفعل من حلها
يبدو أنهم قاموا بتحديث الكود لرمي خطأ فعليًا إذا لم يتم العثور على مستخدم، لذلك كان عليّ استعادة الخطأ بدلاً من المقارنة إذا كان فارغًا؟
begin
resp = client.get("/users/by-external/#{user.id}")
rescue DiscourseApi::NotFoundError => error
puts error.response.body['errors'].first
sync_user(user)
else
resp.response.env.body['user']
end
أيضًا، تغير الرد من
resp['body']['user']
إلى
resp.response.env.body['user']
مشكلتي المتبقية الوحيدة هي أنه عندما أقوم باستدعاء client.sync_sso، أحصل على خطأ داخلي في الخادم 500 الآن
تظهر السجلات
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey"
ومع ذلك، إذا استخدمت نفس التفاصيل بالضبط في طرفية Rails وقمت بتشغيل client.sync_sso، فإنها تعمل بشكل مثالي
فقط للعلم، لم أقم بتغيير نقطة النهاية للأجزاء المذكورة أعلاه لتعمل مرة أخرى، لذلك يبدو أن /users/by-external/ لا يزال صالحًا