external_idを持つトピックの作成に関する問題

こんにちは。

  1. 「external_id」フィールドを使用してトピックを作成しました(REST API経由)。
  2. そのトピックを削除しました。トピックはデータベースに残りますが、ユーザーからは非表示になるはずです。
  3. 同じ「external_id」で同じトピックを作成しようとしましたが、「External has already been taken」というエラーが発生しました。

トピックがユーザーから削除された場合、ユーザーは同じデータで新しいトピックを作成できるはずですが、なぜそれができないのか、同じ「external_id」を使用する方法がないようです。これはバグのように思われます。

2022/10/12 12:33:32 resp: &{Status:404 Not Found StatusCode:404 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:32 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] Vary:[Accept-Encoding] X-Content-Type-Options:[nosniff] X-Discourse-Route:[topics/show_by_external_id] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[26b86048-937c-451c-ac0c-b23dbcd3c8ca] X-Runtime:[0.013603] X-Xss-Protection:[0]] Body:0xc000183bc0 ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:true Trailer:map[] Request:0xc00030a800 TLS:0xc0000d22c0}
2022/10/12 12:33:32 req: &{Method:GET URL:https://forums.tamillinuxcommunity.org/t/external_id/7N69MKNwQAs.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:32 {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
2022/10/12 12:33:32 uploading  https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:32 {"title":"[Youtube] ஆண்ட்ராய்டுக்கான கட்டற்ற மென்பொருள் | FOSS for Android | F-Droid | Tamil","raw":"https://www.youtube.com/watch?v=7N69MKNwQAs\nஇந்த காணொளியில் F-Droid எவ்வாறு பயன்படுத்துவது? அதன் பயன் என்ன ? - என்பதை காண்போம்.\n\nகாணொளி வழங்கியவர்: \nமணிமாறன், விழுப்புரம் கட்டற்ற மென்பொருள் குழுமம்\n\nF-Droid: http://fdroid.org/\n\n#fdroid #fossforandroid #tamil #android #vglug","category":3,"external_id":"7N69MKNwQAs"}

2022/10/12 12:33:33 failed to create Topic: https://www.youtube.com/watch?v=7N69MKNwQAs
2022/10/12 12:33:33 err: <nil>
2022/10/12 12:33:33 resp: &{Status:422 Unprocessable Entity StatusCode:422 Proto:HTTP/2.0 ProtoMajor:2 ProtoMinor:0 Header:map[Cache-Control:[no-cache, no-store] Content-Type:[application/json; charset=utf-8] Date:[Wed, 12 Oct 2022 10:33:33 GMT] Referrer-Policy:[strict-origin-when-cross-origin] Server:[nginx] X-Content-Type-Options:[nosniff] X-Discourse-Route:[posts/create] X-Discourse-Username:[mohan43u] X-Download-Options:[noopen] X-Frame-Options:[SAMEORIGIN] X-Permitted-Cross-Domain-Policies:[none] X-Request-Id:[217f7585-269a-48b3-ac5e-215e02e76bdb] X-Runtime:[0.060606] X-Xss-Protection:[0]] Body:{cs:0xc00032c180} ContentLength:-1 TransferEncoding:[] Close:false Uncompressed:false Trailer:map[] Request:0xc000352100 TLS:0xc0000d22c0}
2022/10/12 12:33:33 req: &{Method:POST URL:https://forums.tamillinuxcommunity.org/posts.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Api-Key:[] Api-Username:[mohan43u] Content-Type:[application/json]] Body:0xc0005b0228 GetBody:0x6b0e40 ContentLength:733 TransferEncoding:[] Close:false Host:forums.tamillinuxcommunity.org Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc0000260b8}
2022/10/12 12:33:33 {"action":"create_post","errors":["Title has already been used","External has already been taken"]}

最初のトピックが復元された場合、どうなりますか?

「いいね!」 1

最初のトピックを元に戻す方法はありません。元に戻すためのアイコン/ボタンが見当たりません。

Mohanさん、こんにちは。:wave:

RGJさんが言及していたのは、これはバグではなく、Discourseはデフォルトで「ソフトデリート」方式を使用しているためだと思います。external_id はそのコンテキストで使用され、設計どおりです。:+1:

「いいね!」 2

削除取り消しのアイコンはこれです。

トピックのレンチにもオプションがあります。

そんなものはありません

要点は、そのようなトピックは復元でき、その場合、同じ外部IDを持つトピックが2つ存在することになります。externalIDは、削除されたものを含むすべてのトピックで一意であるはずです。@maikiが言ったように、これは設計によるものです。

「いいね!」 1

復元できるのですか?どうやって?私もそのトピックを復元したいのですが、そうすれば問題が解決します。しかし、そのトピックを復元する方法がありません。

Discourseは、削除されたトピックで使用されているexternal_idを使用できるようにするか、そのexternal_idで削除されたトピックを復元する方法を提供する必要があります。どちらもありません。

したがって、明らかにバグです。

私の上の投稿には、トピックが復元できることが明確に示されています。この特定のトピックを復元できないからといって、それがバグであるとは限りません。権限または設定の問題でしょう。

フォーラムの管理者ですか?

ところで、これを Bug として分類するのをやめてください。

「いいね!」 1

これをバグとして分類すべきですか?

いいえ、すべきではありません。

セーフモードを使用して、これを実行できるかどうかを確認してください。できない場合は、代わりに何が見えるかを非常に詳細に教えてください。スクリーンショットがお役に立ちます。

間違った方法を試している場合はお知らせください

「いいね!」 2

削除されたトピックに復元ボタンがあります。そこから表示して復元する必要があります。

ユーザーの削除済み投稿リストからは適切なメニューにアクセスできません。メニューのオプションを表示するには、トピック自体に移動する必要があります。


@Mohan43u、これで external_id の使用方法に関する元の質問に答えられましたか? :slight_smile:

はい、しかし@Mohan43uの言うことにも一理あります。「削除済み投稿」リストからそこへ行く方法がありません。では、そのトピックにはどうやって行くのですか?

また、?status=deleted はもう機能しないようですが?

その削除されたトピックには、プロフィールページ以外からアクセスする方法はありません。カテゴリからは全く到達できません。

/latest?status=deleted はテストサイトで機能しますか?


ああ、わかりました。ビデオは確かに役立ちました。:slight_smile: はい、トピックのタイトルは現在、そのビューの削除されたトピックには表示されません。これは以前に提起されましたが、もう一度検討する価値があるかもしれません。:+1:

代わりにトピックリストからアクセスできるか、[YourSite]/latest?status=deleted を試していただけますか?

そして、もう一方のトピックを見つけたので、必要であればスタッフログから削除されたトピックに移動するための別のヒントもあります。

「いいね!」 1

完全にクリーンなフォーラムで、今朝の時点でテストはパスしています。トピックを復元すると、最新のトピックに再び表示されます。

良い提案です!
しかし、プロフィール内の削除済み投稿もそこへのナビゲーションを許可してくれると、本当に素晴らしいと思います。

「いいね!」 1

ウェルカムトピックバナーのCTAに隠されていると思います。コンソールで非表示にして、トピックがその背後にあるかどうかを確認できますか?(または、ウェルカムトピックを編集してバナーを閉じることもできます :slight_smile:

「いいね!」 1

その通りです!

それは同時に素晴らしい(あなたの返答)であり、非常に悲しい(理由)ことです。

したがって、今、これを UX に再分類する理由が2つできました。

「いいね!」 1

本当にありがとうございます。トピックを復旧することができ、REST APIクライアントも正常に動作するようになりました。

「いいね!」 3