最初の「いいね!」バッジは削除できません

説明: ユーザーが投稿の「いいね」を取り消したにもかかわらず、First Likeバッジが再付与され続けるため、First Likeバッジの取り消しをリクエストされました。詳細は以前の投稿のサポートカテゴリにあります。

再現手順:

  1. 新しいユーザーを作成する
  2. 投稿に「いいね」する
  3. First Likeバッジを受け取る
  4. 投稿の「いいね」を取り消す
  5. 管理者ユーザーに切り替える
  6. 「いいね」したユーザーの管理者パネルに移動する
  7. バッジの編集オプションにアクセスする
  8. First Likeバッジの「取り消す」をクリックする
  9. 少し待つ(この特定のバッジのバックフィルジョブがいつ実行されるかは不明ですが、1日あれば確実に実行されるでしょう。バッジ関連のすべてのジョブをSidekiqでトリガーして高速化することも試せるかもしれません。)
  10. バッジは、いいねが取り消された同じ投稿に対して、いいねが行われた同じ日付で自動的にユーザーに再付与されます。

この問題は、バッジを付与するためのSQLクエリのこの行に絞り込まれました。なぜなら、「いいね」アクションのpost_actionsテーブルの行は、いいねを取り消した後も存在しますが、deleted_at列に日付値が設定されており、クエリではこれを考慮していないためです。この修正は、サブクエリのWHERE句を次のように変更することになると思います。

      WHERE post_action_type_id = 2 AND
        pa.deleted_at IS NULL AND
        (:backfill OR pa.post_id IN (:post_ids) )

しかし、開発環境がセットアップされておらず、この修正を自分でテストする時間が十分にありません。

優先度/重大度: 関連するpost_actions行を既に削除することで、この問題は自分で解決しました。このようなリクエストを受けたのは初めてです。それほど高い優先度ではないと思われますか?

「いいね!」 2

彼らは投稿に「いいね」をしました。投稿の「いいね」を取り消しても、投稿に「いいね」ができることを証明したという事実を変えるものではありません。おそらく、First Unlikeバッジの対象になるかもしれませんが、投稿に「いいね」をしたことで、彼らは投稿に「いいね」をしたことになります。投稿に「いいね」をしたことで、バッジが付与されます。一度鳴らした鐘を元に戻すことはできません。

それが私の推測です。

あなたの解決策は非常に巧妙でした。バッジを削除する別の方法としては、ユーザーを削除することです。:rofl:

「いいね!」 2

それは本当ですが、管理者である私が、ユーザーが投稿の「いいね!」を取り消した後でも、そのバッジを剥奪できないのは直感的ではないと私はまだ信じています。少なくとも、「バッジの編集」ビューの「剥奪」ボタンに、バッジは剥奪できないというような通知があるべきではないでしょうか?現在の動作では、管理者が本当にそのボタンをクリックしたのかどうか疑問に思いながら、バックフィリングジョブ中にバッジが静かに再付与されます。

「いいね!」 2

同意します。

私の返答は以下のようになります。

デイブ、残念だがそれはできない。

「いいね!」 3

これを機能に移動しました。機能リクエストは次のとおりです。

再評価されたバッジを100%取り消せるようにする
または
SQLベースのバッジ/定期評価バッジを取り消すことから管理者を禁止する


今のところの私の推奨は「やらない」ですが、管理者のエクスペリエンスは間違いなく向上する可能性があります。

「いいね!」 1