كيف ترفع خطأ من كتلة PostRevisor وتعرضه للمستخدم؟

إليك القليل من التعليمات البرمجية حيث أريد إضافة بعض التحقق الإضافي

(تعليمات برمجية مبسطة وحالة استخدام)

# منع غير الموظفين من تغيير الفئة في موضوع
  PostRevisor.track_topic_field(:category_id) do |tc, category_id|
    if tc.guardian.is_staff?
      tc.record_change('category_id', tc.topic.category_id, category_id)
      tc.topic.category_id = category_id
    else
       tc.topic.errors[:base] << "لا يمكنك تغيير الفئة في هذا النوع من المواضيع"
    end
  end

هذا سيمنع تغيير الفئة من قبل غير الموظفين ولكنه لا يعرض خطأ.

هذا كان يعمل:

تم أرشفة هذا المكون الإضافي منذ ذلك الحين.

هذا المطلب يجب أن تدعمه واجهة برمجة التطبيقات بالتأكيد؟

أنت أفضل مني في هذه الأمور، لكنني أعتقد أن Rails لا يحتاج إلى إظهار هذا مرة أخرى لأنه من المتوقع أن يمنع Ember المستخدم من تحديد فئة ليست من الفئات التي يجب أن يكون المستخدم قادرًا على تحديدها. لذا ربما تأكد من أن الواجهة الأمامية تمنعهم من تغيير الفئة إذا لم يكن من المفترض أن يفعلوا ذلك حتى لا يواجه PostRevisor هذا الموقف غير المريح أبدًا؟

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

نعم، بالتأكيد، هذا اعتبار.

من الممارسات الجيدة الحد في نهاية واجهة برمجة التطبيقات أولاً، ثم الواجهة الأمامية إذا كان بإمكانك القيام بذلك - أي يجب ألا تعتمد أبدًا على الواجهة الأمامية فقط لمنع إجراء غير قانوني.

بالإضافة إلى ذلك، يجب أن تقوم الواجهة الأمامية بتصعيد أخطاء Active Record.

لذا فإن أداء هذا في واجهة برمجة التطبيقات أمر مهم.

أتفق. تريد من Rails فرض ذلك.

اعتقدت أنني فهمت أنه كان يفرض المتطلب ويرفض إجراء التغيير، ولكنه لم يقدم خطأ جيدًا بما فيه الكفاية للواجهة الأمامية.

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

نعم، أنت على حق.

أنا أحاول فقط منع تغيير الفئة، لذا فإن واجهة المستخدم غير مفيدة إلى حد ما في أنها مصممة للسماح لك بتغيير كل البيانات الوصفية، أو عدم تغييرها على الإطلاق.

وبالتالي، فإن وجود خطأ ظاهر سيكون مفيدًا جدًا.

إن صلابة قوالب .gjs تجعل هذه الأنواع من التغييرات صعبة للغاية الآن.

هذا القالب لا يزال hbs ولكني لا أريد تجاوزه لأسباب واضحة.

سأجرب حيلة CSS.

مرة أخرى، أنت أفضل مني في ذلك، ولكن أعتقد أنه سيكون من الممكن إخفاء محدد الفئة يبدو أن هذا لن ينجح.

لذا ربما يكون الشيء الذي يجب القيام به هو اختراق مُسلسل الفئة بحيث لا يرسل أي فئات. يبدو الأمر صعبًا، على الرغم من أنك ستحتاج إلى معرفة كيفية اختراقه فقط عندما كنت تقوم بتحرير موضوع بدلاً من إنشاء واحد.

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

"تم نجاح "الاختراق" :tada: :

ما زلت أرغب في استجابة مفصلة ومنطقية من الخادم، وخاصة تلك التي تستفيد من Active Record."

واجهت هذا السلوك أيضًا وكنت في حيرة من أمري. كل التطوير والاختبار الخاص بي يتم عبر طلبات API نظرًا لعدم وجود أي شيء في الواجهة الأمامية بعد، لذلك كنت مرتبكًا عندما بدت الاستجابات التي تلقيتها وكأنها نجاحات. اعتقدت أن الضوابط الخاصة بي كانت غير وظيفية تمامًا حتى قمت بتجميع الحد الأدنى من مصحح الأخطاء وكافحت من خلال المتتبع.\n\nتعديل:\nهاه… قررت إعادة تشغيل بيئتي بالكامل وبدأت في إرجاع رسائل خطأ في استجابة API.