この行を 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])