类别行为异常,因其以数字开头

大家好,

最近升级到最新版本后,我的两个分类指向了同一个分类(比如你有分类 1 和分类 2,两者都会显示分类 1 的内容)。这种行为本身就很奇怪,因此当我试图“理清”这个问题时,我尝试修改分类 2 的配置(它是显示错误帖子的分类)。但无论重试多少次,更改都无法保存。

不过,我尝试将分类的 URL 更改为其他内容,看看是否能强制刷新或触发其他效果。现在,如果点击该分类,Discourse 会一直卡在重新加载状态,而 URL 也不会更新到该分类。所以,除非我遗漏了什么,否则我现在无法编辑该分类,因为我认为需要进入该分类才能进行编辑。

我们已经重建了实例并尝试了其他方法,但没有任何变化。大家有什么建议吗?

提前感谢。

或许可以检查一下永久链接?重命名分类时会生成永久链接。这可能是导致问题的原因(虽然如果是这个问题应该会很明显,但这只是我目前的想法)。

感谢你的建议 @pfaffman

确实,分类有一个固定链接,但我仍然遇到同样的奇怪行为。

在尝试修改固定链接时,我想我明白了问题所在:“分类 1”使用的是正常名称(例如:“分类”),而“分类 2”使用的是数字名称(例如:

类别名称是否以数字开头?这可能是一个问题。

是的,这确实就是一个数字。:sweat:

继续调查:

  • 为旧名称(“11”)和新名称(“111”)都添加了永久链接。没有效果,页面持续加载(不得不猜测分类 ID,不确定是否有办法在某个地方查看它)。

  • 想补充一点,所涉及的分类是一个子分类(提一下是因为查看 URL 时我不确定这是否会影响输出)。因此,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 替换为起始分类和目标分类的 slug。结果将返回两个 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