Badge Favoritesが一部ユーザーで動作しない - ポップアップに「FAILED」と表示される

ユーザーがお気に入りを切り替えられない問題が発生しています。このエラーに一致する記事やプルリクエストをいくつか見つけましたが、それらは2年前のもので、マージリクエストは適用されていました。そのため、別の問題のようです。

すべてのユーザーではありませんが、このユーザーはバッジにお気に入りを2つ持っています。各バッジには複数の達成事項があります。お気に入りをクリックすると、「失敗しました」というポップアップが表示されるだけです。

Chromeのコンソールには、URL /user_badges/17307/toggle_favorite から400エラーが返されていると表示されています。

修正方法について何かアイデアはありますか?アプリでもブラウザでも動作しません。

類似トピック: "FAILED" error selecting Favorite badges

ただし、2回クリックしてもこのエラーは解消しませんでした。

こんにちは @Josiah_Philipsen :slight_smile:

結局、この件は解決しましたか?

原因はここにあるかもしれません。参考までに、私は Roblox DevForum のユーザーで、v3.0.3 を実行しており、管理者ではありません。ここに記載されている問題が発生しています。そちらで簡単な書き込みをして自分で解決しようとしましたが、関連する部分をコピー&ペーストします。

個別のバッジを持っていた頃は、お気に入りのバッジを選択できましたが、はスタックされたコピーを持っているため、選択解除できなくなりました。バッジは、いくつの重複があってもそれぞれユニークなので、お気に入りに登録した後にコピーを増やすことが原因かもしれません。これが私の現在の推測ですが、もちろん、実際の Discourse のインストールを調べることができないため、証明することはできません。

私はずっと前に単一のコピーを持っていたときに Great TopicGood Topic バッジをお気に入りに登録しましたが、現在はそれぞれ 2 つと 4 つ持っています。お気に入り解除を試みると、一般的な FAILED という応答になります。バッジをお気に入りに登録していない他のユーザーは、自由に登録および解除できるため、この問題は、既にお気に入りに登録されている同じ タイプ のバッジが追加されたことによって引き起こされていることを示しており、それらのコピーが合計のお気に入りの数に含まれているため、何らかのアサーションが失敗しています。

このバージョンでの toggle_favorite を見ると、バッジの数に関連するアサーションは次のとおりです。

if !user_badge.is_favorite &&
     user_badges.select(:badge_id).distinct.where(is_favorite: true).count >=
       SiteSetting.max_favorite_badges
  return render json: failed_json, status: 400
end

user_badge.is_favorite はここで true になるはずなので、最初はこれを無視していましたが、追加のコピーがあるためにそれらが気に入ったものとして考慮されていないのではないかと思い始めています…

ちなみに、これが新しいバージョンで修正されている場合は、これを復活させてしまい申し訳ありませんが、そこの管理者は解決しようとしており、それは一種の失われた原因だったので、ここで注目を集めて、彼らが修正したり Discourse をアップグレードしたりするのを容易にしようとしています。

「いいね!」 1