向同一标签添加同义词时卡住

大家好,

我不小心在标签 A 下将标签 A 添加为同义词(在手机上误操作)。

  • 删除同义词时报错 500
  • 取消关联按钮时报错 422
  • 删除标签时出现未知错误

可能有帮助的信息:

  • 我可以将标签 A 重命名为 B,同义词也会随之更新。
  • 标签 A 下是否有 0 篇或 1 篇帖子,对以上错误没有影响。

有人能复现这个问题吗?

2 个赞

这似乎是不应该发生的情况。我猜你最终得到了类似这样的结果:

我在我本地的开发站点上测试了这一点。创建同义词后,点击“移除同义词”按钮会返回 422 错误。点击同义词旁边的垃圾桶图标不会返回 500 错误,而是直接删除了整个标签。

我认为应该添加一些保护机制,以防止将某个标签设置为它自己的同义词。

1 个赞

感谢检查此问题。

嗯,好的,这与我当前的安装情况不同。我目前无法删除该标签或同义词。

你的网站使用的是哪个版本的 Discourse?

1 个赞

我刚升级到了最新版本:

2.6.0.beta5 ( 811c610108 )

其行为与我的原始帖子(OP)相同。

1 个赞

我们下周再处理这个吧,@eviltrout。将标签设为自身的同义词……这不太好。

2 个赞

已通过以下方式修复:

感谢 @MarcP 报告此问题。:+1:

4 个赞

按照 @MarcP 的请求开启此话题。他无法删除该标签,即使通过控制台也不行。

cd /var/discourse
./launcher enter app
rails c

tag = Tag.find_by_name("tag_name")
tag.destroy

上述方法对我有效,但对 Marc 无效。Marc,能否在此详细说明一下你的问题?

3 个赞

@techAPJ 发给我的命令对我无效,不过我执行了以下链接中提供的(略有不同的)命令:How can I delete a tag in development database (on local)? - #4 by simon

我尝试删除标签 “testing”(它有一个同义标签 “testing”),得到了以下结果:

[1] pry(main)> t = Tag.find_by_name('testing')
=> #<Tag:0x000055a268f6f990
 id: 35,
 name: "testing",
 topic_count: 0,
 created_at: Wed, 11 Nov 2020 04:38:06 UTC +00:00,
 updated_at: Thu, 19 Nov 2020 03:44:35 UTC +00:00,
 pm_topic_count: 0,
 target_tag_id: 35>
[2] pry(main)> t.destroy!
SystemStackError: stack level too deep
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/reflection.rb:120:in `_reflect_on_association'
[3] pry(main)>

尝试:

DB.exec("delete from tags where name = 'testing'")
5 个赞

这行得通!谢谢 Sam :slight_smile: 祝你一周愉快。

2 个赞