数字から始まるため、カテゴリの動作が奇妙になります

皆さん、こんにちは。

最近、最新バージョンにアップグレードしたところ、2 つのカテゴリが同じカテゴリ(例えば、カテゴリ1 とカテゴリ2 の両方がカテゴリ1 の内容を表示する)を指すようになりました。この動作自体がかなり奇妙なので、これを「解決しよう」として、間違った投稿を表示していたカテゴリ2 の設定を変更しようとしました。しかし、何度試しても変更は保存されませんでした。

その後、カテゴリの URL を別のもので変更して、リロードを強制できるか試してみたところ、カテゴリをクリックすると Discourse が URL をカテゴリのものに更新せずに読み込み中にフリーズするようになりました。何か見落としている可能性はありますが、カテゴリにアクセスして編集する必要があるため(私の理解では)、現在カテゴリを編集できない状態です。

インスタンスを再構築するなどいろいろ試しましたが、何も変わりません。何か対処法をご存知の方はいらっしゃいますか?

よろしくお願いいたします。

パーマリンクを確認してみるのはどうでしょうか?カテゴリ名を変更するとパーマリンクが作成されます。それが原因かもしれません(もしそうなら明らかなはずですが、思いつくのはそれだけです)。

@pfaffman さんのご提案、ありがとうございます。

確かにカテゴリにはパーマリンクが存在しますが、同じ奇妙な動作が発生しています。

パーマリンクをいじっている最中に、問題の原因が分かったような気がします。「Category 1」は通常の名称(例:「Category」)ですが、「Category 2」は数値の名称(例:「11」)になっています。私の推測では、Category 1 の「Category ID」が Category 2 の名称と同じ数字であるため、すべてが混乱しているのではないかと思われます。

私が行った名称変更は、試しに大きな数字に変更したものでした(「11」から「111」へ)。そのため、読み込みが止まったままになっています。もしかすると、Category ID「111」を探しているからでしょうか?これが起こり得るかどうか、どなたか確認していただけますでしょうか?

カテゴリ名は数字で始まっていますか?それが問題になる可能性があります。

はい、文字通り数字です。:sweat:

引き続き調査しました:

  • 旧名(「11」)と新名(「111」)の両方にパーマリンクを追加しましたが、効果はなく、読み込みが継続しています(カテゴリIDを推測する必要がありましたが、どこかで確認する方法があるかどうかは不明です)。

  • 追記:対象のカテゴリはサブカテゴリです(URLを見ただけでは出力に影響するかどうか不明なため、念のため記載します)。つまり、/c/ParentCategory/111 のような形式です。

  • アクセスできないカテゴリを操作して、URLを変更したりできる方法はありますか?

こんにちは、またお会いできて嬉しいです。

限られた知識の中で、さまざまな方法を試してきました。カテゴリにアクセスせずに編集する方法が誰かによって示されない限り、私はほとんどアイデアを持っていません… カテゴリ内のすべてのトピックを別のカテゴリに「移動」する方法はありますか?

自分でこれを解決できないようなので、使いやすさを考慮して、別のカテゴリに移動し、「ゾンビ」状態のカテゴリをより良いアイデアが見つかるまで残しておくという方法はどうでしょうか(私の記憶が正しければ、カテゴリにアクセスせずに削除することはできないため、それは空のままリストに残ることになります)。

:warning: コマンドを実行する前に、サイトのバックアップを取得してください!

cd /var/discourse
./launcher enter app
rails c
Category.find_by_slug('STARTING-CATEGORY-SLUG').id
Category.find_by_slug('DESTINATION-CATEGORY-SLUG').id
exit

STARTING-CATEGORY-SLUGDESTINATION-CATEGORY-SLUG を、移動元と移動先のカテゴリのスラグに置き換えてください。結果として2つのIDが表示されます。

rake categories:move_topics[STARTING-CATEGORY-ID,DESTINATION-CATEGORY-ID]

例:

rake categories:move_topics[11,27]
./launcher enter app 
rails c
c=Category.find(STARTING-CATEGORY-ID)
c.destroy

こんにちは @dax さん、

返信が遅くなり申し訳ありません。ご提示いただいた手順で問題をテスト、実行、解決することができました。お手伝いいただき、誠にありがとうございます。

何かお返ししたいと考えています(私のコーディングスキルはそれほど高くないのですが)。カテゴリが数値にならないようにするバリデーションを追加する方法はありますか?お手伝いしたいです。

皆様、ありがとうございます。

ありがとうございます。エンジニアがすでに、カテゴリスラッグに数値が挿入されるのを防ぐ修正を適用しています。ご指摘の通り、現在カテゴリ名に「11」を使用することは問題ありませんが、スラッグは数字で始まらないものに変更する必要があります。例えば cat-11 のようにします。