Moin
1
“投稿” での「貢献ありがとう」ポップアップが制限を超えても表示される? の議論を続けます。
この変更について質問があります。テストしている際、何か見落としているか、仕組みを誤解しているような気がします。
私の予想では、教育用バナーは最初の数件の投稿に表示されるはずです。その件数は 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 がマージされた後、テストは明らかに失敗していませんでした。
私が何を見落としているのか、どなたか理解を手伝っていただけませんか?
「いいね!」 5
chapoi
2
さて、これはちょっとした落とし穴ですね。私の理解では、この混乱は設定名の更新(educate_until_posts)が欠落していることに起因していると思います。というのも、PR#400074 では、通知が一度だけ表示され、その後はカウントに関係なく二度と表示されないことを意図しているように見えるからです。
つまり、現在この設定は「最初の N 投稿までメッセージを表示する」という意味ではなく、以下の意味になります。
「ユーザーの投稿数がこの閾値未満である場合にのみ教育メッセージを表示し、それも正確に一度だけ表示する」
@Roman 私の見解は正しいでしょうか?この設定の文言を更新すべきだと考えます。
「いいね!」 2
Roman
(Roman Rizzi)
3
この変更の主な動機は、教育メッセージが何度も表示されるのを防ぐことでした。しかし、このトピックを見て、少しやりすぎたかもしれません。メッセージが一度しか表示されないなら、その設定自体が意味をなさなくなるからです。
もう一度見直して、より適切なバランスを探します。見つけたら、ここで更新します。
「いいね!」 4
Roman
(Roman Rizzi)
5
昨日、この修正をマージしました:
educate_until_posts のしきい値を下回っている場合、教育的なメッセージは入力開始時に 1 回のみ表示され、投稿するかページをリフレッシュしない限り再表示されません。
「いいね!」 2