サブカテゴリが既に存在するカテゴリに親カテゴリを割り当てるとエラーが発生します

この問題を解決する方法は見つけましたが、報告する価値があると思い、投稿しました。

既存の3つのサブカテゴリを持つcat-Aに、親カテゴリとしてcat-Bを割り当てようとしました。Discourse システムはエラーメッセージを表示し、「サブカテゴリを移動することはできません」といった旨を伝えてきました。つまり、カテゴリのネストには何らかの制限があるのではないかと推測しています。

それで、まずは3つのサブカテゴリの親カテゴリを再割り当てすればよいと結論づけました。しかし、それを実行しようとしたところ、以下のような例外エラーが発生しました。

コンソールでは、c/cat-B/cat-A/subcategory/edit/find_by_slug.json で終わる URL に対して 404 エラーが表示されました。

cat-Aの他の 2 つのサブカテゴリでも同様のエラーが表示されました。

本来表示されるべきは cat-B を含まないc/cat-A/subcategory/edit です。そこで、この形式で URL を手動入力すると、予想通り通常のカテゴリ設定ページに移動できました。この方法で 3 つのサブカテゴリとcat-Aのすべてを修正することができました。

これはおそらく、今後修正する価値のある小さなバグでしょう :muscle:

「いいね!」 2

お使いのサイトがどのバージョンの Discourse を使用しているかご存知ですか?サイトをセルフホストしている場合、バージョンは管理ダッシュボードの上部に表示されています。私がこれをお聞きしたのは、Discourse が親カテゴリの追加を防ぐべきだと考えているためです。私が試みると、次のエラーが表示されます:

これは、Discourse のより新しいバージョンで修正されたバグに遭遇している可能性があります。また、私が正しく問題を再現できていない可能性もあります。

「いいね!」 3

@simon ありがとうございます。

当サイトはセルフホストで、最新バージョンのようです。

バージョンの詳細はこちらです。これで何かお役に立てますか?

「いいね!」 1

/logs のページにアクセスした際に、エラーの詳細は表示されますか?

「いいね!」 1

/logs には関連するエラーの詳細は表示されていませんでした。私は開発者ではないので、何か見落としている可能性もあります。

しかし、エラーを再現することができました。かなり一貫性があるようです。再度 /logs を確認しましたが、新しい情報は何もありませんでした。

既存のサブカテゴリを持つカテゴリに親カテゴリを割り当てようとした際に、以下のようなメッセージが表示されました。

その後の状況について、さらに詳細を記します:

1. Cat-A について
新しい親カテゴリを割り当てようとした、サブカテゴリを持つカテゴリ

  • Cat-A は通常通りカテゴリのホームページに表示されます。Cat-A およびそのサブカテゴリを移動する動作も正常です。
  • Cat-A は「すべてのカテゴリ」のプライマリナビゲーションメニューには表示されなくなりました
  • Cat-A を編集しようとすると、「ページが表示されません」という 404 エラーが表示されます。

2. Cat-B について
Cat-A を割り当てようとしたカテゴリ

  • Cat-A が Cat-B のドロップダウンリストに表示されています
  • Cat-B を編集する際は、すべて正常です

3. サブカテゴリについて

  • 任意のサブカテゴリを編集しようとすると、同じエラーが表示されます

そして、これらすべてを書き終えた後、エラーは手動で URL を入力する回避策を使うこともなく、不思議と自然に修復されました。どうやら今はすべて正常なようです、皆さん。

「いいね!」 2