私のサイトにあるトピックについて、ある人(X と呼ぶことにします)が投稿した後、誤った情報があったため削除しました。私はそれを復元し、X に元の投稿の下に訂正を投稿するよう依頼しました。
それ以来、そのトピックは繰り返し削除されています。私は二度復元しましたが、一見問題なさそうに見えますが、少し経つと再び削除された状態として表示されます。
何が起きているのでしょうか?
私のサイトにあるトピックについて、ある人(X と呼ぶことにします)が投稿した後、誤った情報があったため削除しました。私はそれを復元し、X に元の投稿の下に訂正を投稿するよう依頼しました。
それ以来、そのトピックは繰り返し削除されています。私は二度復元しましたが、一見問題なさそうに見えますが、少し経つと再び削除された状態として表示されます。
何が起きているのでしょうか?
該当するユーザーがそれを削除し続けている可能性はありませんか?私は、自分を正すという「恥」に耐えるよりも、投稿を削除することを選ぶユーザーに何度か遭遇しました。
ログ(admin/logs/staff_action_logs)を確認して、ユーザーがそれらを削除していないか確認してください。ログには、編集されかつ削除された投稿、そして誰が削除したかが表示されます。さらに詳しい情報は、情報アイコンをクリックすることもできます。
投稿を維持することについて考えを改めたユーザーもいますし、他にも多くの理由があります。時には、言おうとしていたことを忘れさせたほうが良いと感じるような状況もあります。理由が明示されなくても、その理由を受け入れるしかない場合もあります。![]()
ただし、ユーザーはトピックや投稿を即座に削除することはできません。できるのは、トピックや投稿に「24時間後に削除する」という公開された意図を示す保留削除をトリガーすることだけです。例えば以下のようになります:
(投稿者は投稿を撤回しました。フラグが付けられない限り、24時間後に削除されます)
さらに、トピックに対してこの操作を行えるのは、返信が一切なく、かつトピックの作成から1日以内の場合に限られます。
システムによってトピックが削除された場合も、私たちには同じことが起こります。つまり、投稿者が投稿を削除してから 24 時間が経過すると、それを復元する方法はありません。たとえ復元しても、30 分後に自動的に再度削除されてしまいます。
ユーザーとお話ししたところ、私の理解では、彼らがそれを絶えず削除しているわけではないようです。むしろ、彼らはその事実に驚いており、そもそも私に問題を報告してくれたのは彼らです。
私のログは以下のようになっています:
(@JimPas の提案に感謝します!)
何かアイデアはありますか?問題のトラブルシューティングに役立つ追加データを提供できますか?@Pad_Pors も同様の状況に遭遇した可能性があります。
その後、この問題の解決策が見つかりましたか?私たちも同じ現象に直面しています。
ユーザーが投稿を作成して削除し、その復元を求めましたが、システムがそれを(最初の投稿であるため、トピック全体を)繰り返し削除しています。
内容を新しいトピックに移動することはできますが、元の URL を追跡しているユーザーは「ページが見つかりません」ページに誘導されてしまいます。
今月月曜日にこれを再現できますか @tshenry?
@AstonJ さん、こんにちは
再現手順の確認をお願いできますか?現在私がテストしている手順は以下の通りですが、これで正しいかご確認いただけますでしょうか?
もし私が行うべき手順に違いがある場合は、お知らせください。
こんにちは、テイラーさん。このトピックは4月に投稿されましたが、以下のようなことが起こったようです:
ユーザーが昨日自分のトピックがどこにあるのかと質問して初めて、この問題が起きていることに気づきました。
他に必要な情報があればお知らせください(参考までに、このトピックが繰り返し削除されているのはこちらです:this)。
ええと、ステップ1で何が起こっているのか完全に理解できていませんが、結論としてユーザーがトピックを作成したと仮定すると、ステップ2は不可能のようです。通常のユーザーとしてトピックを作成し、それに対して返信した後、最初の(トピックの)投稿を削除しようとすると、最初の投稿は削除対象としてマークされません。これは仕様によるものです。
私の場合は次のようになりました:
正確な時間については確信がありません。
私も同様のことが何度か起こったことを確認しました。
私の理解では、スタッフが通常ユーザーのスレッドに対して「削除を元に戻す」ボタンを持っているのは、スレッドが削除予定に設定されている場合のみです。投稿を削除予定に設定している間は、元の投稿者だけが投稿を元に戻すことができます。「削除を元に戻した」とおっしゃるのは、自動削除が実行された後という意味でしょうか?
ああ、そうね、ごめんねテイラー!たぶん最初の投稿を削除して、2 番目の投稿を作成したんだと思う。記憶が正しければ、それは可能だったはずだよ。
以下が私の提案です:
delete_removed_posts_after サイト設定を 1 に変更しました)何が起きているか: ユーザーが自身のトピック投稿を削除すると、user_deleted というプロパティが true に設定されます。DestroyOldDeletionStubs というバックグラウンドジョブが30分ごとに実行されます。このジョブは PostDestroyer.destroy_stubs 関数を実行し、データベースを検索して user_deleted が true に設定され、かつ「削除タイマー」が期限切れになった投稿を削除します。
問題点: スタッフが投稿を復元しても、user_deleted が false に設定されないため、次に DestroyOldDeletionStubs が実行された際に投稿が再度削除されてしまいます。
解決策: staff_recovered 関数に、user_deleted を false に設定するロジックを追加する必要があると思います(user_recovered はすでにこれを行っています)。詳細は discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub をご覧ください。
簡易的な対処法: トピック投稿を復元し、その投稿IDを取得した後、Railsコンソールにアクセスして以下のコマンドを実行します:
Post.find_by_id(POST_ID).update(user_deleted: false)
投稿IDは、トピックURLの末尾に .json を追加することで簡単に取得できます。例えば、このトピックの場合:https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json。トピック投稿IDは 632362 です。
なるほど、@eviltrout の修正が必要ですね。
素晴らしい探偵ワーク、@tshenry!
よくできました、Taylor ![]()
上記の操作が必要な他の人のために、まず投稿/トピックを復元する必要があります。そうしないと、find は nil を返します。
依然としてこの現象が発生しています。user_deleted を false に設定する作業は進展しましたか?
ホスト型インスタンス向けの簡易的な修正や回避策はありますか?
私の提案は以下の通りです: