كيف يتفاعل `educate_until_posts` مع التغييرات الأخيرة في `check_education_message`؟

متابعة النقاش من نافذة منبثقة “شكرًا على المساهمة” تظهر في المنشورات حتى بعد تجاوز الحد؟:

لديّ سؤال حول هذا التغيير. أشعر أنني أفتقد شيئًا ما أو أنني أساءت فهم كيفية عمل هذا الأمر أثناء الاختبار.

توقّعي هو أن يظهر شريط التوعية في أول بضع منشورات، مع أن العدد يُتحكَّم به عبر إعداد الموقع educate_until_posts. وبشكل افتراضي، تكون هذه القيمة 2.

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

كما تفحصت الكود:

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

ثم تحدد ما إذا كان المستخدم ينشئ موضوعًا جديدًا أو ردًا، وتُحسب إجمالي عدد منشورات/مواضيع المستخدم.

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

ما الذي أفتقده هنا؟

على سبيل المثال، إذا تُرك educate_until_posts على قيمته الافتراضية وهي 2، فإنني أتوقع أن تُعرض الرسالة للمستخدم في منشوريه الأولين.

يبدأ المستخدم بإنشاء منشوره الأول تمامًا. إنه ليس رسالة خاصة، ولا يوجد سجل UserHistory موجود بعد، لذا تُعرض الرسالة - وهذا منطقي.

لكن لماذا يُنشأ سجل UserHistory فورًا بعد ذلك؟ أليس هذا من شأنه منع عرض الرسالة مرة أخرى أبدًا؟

كنت أتوقع شيئًا أشبه بهذا:

  count = @user.topic_count + @user.post_count


  if count >= SiteSetting.educate_until_posts
    UserHistory.create!(
      action: UserHistory.actions[:notified_about_composer_education],
      target_user_id: @user.id,
    )
  elsif count < SiteSetting.educate_until_posts
      return (

ولكن إذا كانت هذه مشكلة فعلية، فأنا أفترض أن الاختبارات المتعلقة بهذا الإعداد كانت ستفشل. وبما أن طلب الدمج (PR) قد دُمج، فإنها لم تفشل على ما يبدو.

هل يمكن لأحد المساعدة في توضيح ما أغفله هنا؟

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