manuel
(Manuel Kostka)
2021 年 9 月 12 日午前 10:22
1
「不適切」カテゴリがあり、モデレーターはフラグが立てられた投稿をここに移動させることができます。これにより、公開フォーラムには不適切な内容でも、議論を続けることが可能です。当然ながら、このカテゴリは要約メールには含めたくありません。そのため、サイト設定で除外(抑制)されていました。
しかし、最近の要約にこのカテゴリからのトピックが誤って含まれていました。設定で一度選択を外し、再度選択すると、ログに変更が記録されていることがわかりました。
14 は「不適切」カテゴリの ID です。Previous カテゴリの 2(おそらく「サイトフィードバック」)はかなり以前に削除されたはずですが、どうやら除外カテゴリのリストにはまだ含まれていたようです。これが、リストが意図通りに機能しなかったバグの原因だったのでしょうか?
「いいね!」 3
manuel
(Manuel Kostka)
2021 年 9 月 13 日午前 8:14
2
サマリープレビューを確認しましたが、カテゴリはまだ含まれています。
実際、どのカテゴリを選んでも、非表示にする機能は機能しません。
simon
2021 年 9 月 13 日午後 9:58
3
manuel:
どのカテゴリを選んでも、抑制機能は機能しません。
はい、ローカルの開発環境で試したところ、同じ現象が発生していることが確認できました。問題は、こちらのロジックにあると思われます:
(has_flags? || is_official_warning?)
User.from(
"(#{allowed_users.to_sql} UNION #{allowed_group_users.to_sql}#{moderators_sql}) as users",
)
end
# Additional rate limits on topics: per day and private messages per day
def limit_topics_per_day
return unless regular?
if user && user.new_user_posting_on_first_day?
limit_first_day_topics_per_day
else
apply_per_day_rate_limit_for("topics", :max_topics_per_day)
end
end
def limit_private_messages_per_day
return unless private_message?
return if subtype == TopicSubtype.notify_moderators
apply_per_day_rate_limit_for("pms", :max_personal_messages_per_day)
end
この行を topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids) に変更すると、digest_suppress_categories 設定に追加されたカテゴリに関する問題は解決するようですが、ミュートされたカテゴリを処理するためのロジックを追加する必要があります。以下のような実装が考えられます:
topics = topics.where("topics.category_id NOT IN (?)", remove_category_ids).where("topic_users.notification_level != (?)", TopicUser.notification_levels[:muted])
「いいね!」 3
問題の原因は、対象のユーザーがすでにそのトピックにアクセスしており、そのユーザーに対して「TopicUser」モデルのレコードが作成されていることだと思います。そのため、ミュート状態かどうかを確認する上記の条件をそのトピックが通過してしまいます。この場合、以下のプルリクエストでこの問題が修正されるはずです。
main ← suppress-category-digest-fix
merged 07:17AM - 03 Nov 21 UTC
Previously, suppressed category topics are included in the digest emails if the … user visited that topic before, and the `TopicUser` record is created with any notification level except 'muted'.
「いいね!」 3