トピックの返信を日付で並べ替える方法はありますか

こんにちは。可能かどうか分かりませんが、色々調べても何も見つからなかったので質問させていただきます。フォーラムのすべてのトピックのすべての返信を、作成日順に並べ替えたいと思っています。

古いフォーラムから新しいDiscourseフォーラムへのデータ移行に取り組んでいます。そのために、API経由でトピックと返信を再作成しており、返信が最初に作成された日付でDiscourseに送信できるようにしています。これはうまくいっており、Discourseで作成された返信を見ると、元の日付が表示されています。

しかし、すべての返信が元の日付で設定されているにもかかわらず、APIで作成された順序で並べ替えられています。これがバグなのか、意図されたものなのか、あるいはAPI POST呼び出しで設定した日付で並べ替える方法があるのか分かりませんが、このトピックについて助けていただけると幸いです。皆さん、よろしくお願いします。

バージョン2.8.8を使用しています。

それはやめてください。インポートスクリプトを使用する必要があります。例については discourse/script/import_scripts at main · discourse/discourse · GitHub を参照し、他のフォーラムのインポートスクリプトの実行方法についてはここで検索してください。

投稿は作成された順に表示されます。そのため、APIスクリプト(実際には使用したくないもの)で適切な順序で作成する必要があります。

「いいね!」 1

うーん、返信ありがとうございます。以前はスクリプトの使用を検討しましたが、Discourse には多くのテーブル関係があるため、API を使用することにしました。しかし、1 つのテーブルにデータを挿入し、残りの関係は Discourse が処理するスクリプトを作成する方法はありますか? それなら、もっと簡単になるかもしれません。

しかし、API経由での移行はこれまでうまくいっていました。Discourseがソートして表示しないのであれば、投稿を作成するためにエンドポイントcreated_at属性を送信できることの利点は何でしょうか…これは機能リクエストであるべきではないでしょうか?

はい、実際、あります!例をリンクしました。

もしそれが本当なら、あなたは投稿しなかったでしょう。:wink:

いいえ、なぜならあなたの問題を解決する方法は、私がリンクした数十の例のいずれかを使用することだからです。それははるかに、はるかに簡単になるでしょう。私はRubyを本当に学ぶ前にいくつかのインポートスクリプトを書きました。

たとえAPIを使用したいとしても、投稿をcreated_atの順に作成する必要があります。プラグイン(またはテーマコンポーネント?)でそれらをソートする方法はありますが、実際にはそうしたくはないでしょう。

@JammyDodger は、rakeタスクがあることを指摘しています。

rake posts:reorder_posts

それがあなたの問題を解決するかもしれません。もしあなたが数十のトピックと数百の投稿をインポートしているなら、それを試してみる価値はあるかもしれません。

「いいね!」 2

なるほど。自分のアイデアに従い続けます。投稿を作成する際のPOST呼び出しにおけるcreated_at属性について、投稿をそれによって並べることができないのであれば、無意味であるように思われます。いずれにしても、ありがとうございました。

念のためお伝えしておきますが、作成日順に並べ替えられないのは、投稿を別のトピックに移動することをサポートするように設計されており、その場合、日付が重複しても投稿が「混在」しない方が望ましいことが証明されているためです。

それに関する以前の議論はこちらです。

移行のアプローチ方法という点では、Jayの意見に同意します。おそらく、先行事例に従った方が良いでしょう。Web APIではありませんが、既存のスクリプトは、これを念頭に置いた、より低レベルの「移行API」のようなものに依存しています。

Web APIは、主にフロントエンドのDiscourseアプリ用のAPIとして設計されています。さまざまな統合に成功裏に使用されていますが、その主な目的に最適化されています。

「いいね!」 2

役に立たないわけではありません。広告どおりに created_at 日付が設定されます。投稿を作成する前に、投稿を created_at で並べ替えるだけです。