“投稿” での「貢献ありがとう」ポップアップが制限を超えても表示される? の議論を続けます。
この変更について質問があります。テストしている際、何か見落としているか、仕組みを誤解しているような気がします。
私の予想では、教育用バナーは最初の数件の投稿に表示されるはずです。その件数は educate_until_posts サイト設定で制御されます。デフォルトではこの値は 2 です。
テストのため、念のためこの値を 5 に変更しました。しかし、テストユーザーが教育メッセージを見たのは 1 回だけでした。
また、コードも確認しました:
私の理解では、このメソッドはまず、個人メッセージと、すでに教育メッセージが表示されたことを示す記録を持つユーザーを除外します。この部分は理解できます。
次に、ユーザーがトピックを作成しているのか返信をしているのかを判断し、ユーザーの投稿数・トピック数の合計を計算します。
次の部分が私を混乱させています。合計投稿数が設定された制限より低い場合、教育メッセージの再表示を防ぐ記録を作成し、その後メッセージを表示します。
何が欠けているのでしょうか?
例えば、educate_until_posts をデフォルト値の 2 のままにしておくと、ユーザーの最初の 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 がマージされた後、テストは明らかに失敗していませんでした。
私が何を見落としているのか、どなたか理解を手伝っていただけませんか?
