# 如何将一个分类中的所有主题移动到新标签

**URL:** <https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141>\
**Category:** Support\
**Created:** [2019年七月5日 02:59 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141 "2019-07-05T02:59:46Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月5日 02:59 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/1 "2019-07-05T02:59:46Z")

</div>

你好 Discourse 团队，

我们是否有命令行可以将某个分类下的所有主题移动到新的标签？  
我们是否有命令行可以将所有子分类下的主题移动到父分类？

---

<div class="post-metadata">

**Author:** ![wesochuck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wesochuck/32/108706_2.png) [@wesochuck](https://meta.discourse.org/u/wesochuck)\
**Post date:** [2019年七月5日 17:36 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/2 "2019-07-05T17:36:01Z")

</div>

1. 导航至包含您希望更改的帖子的类别
2. 切换批量选择工具（位于左上角的列标题处）  
 ![image](https://global.discourse-cdn.com/meta/original/3X/5/d/5dcf1368003de11044214c6464d23993cfce1c8e.png)
3. 点击“全选”按钮  
 ![image](https://global.discourse-cdn.com/meta/original/3X/2/d/2d357d1c333e1d67aaae11afabb7895612faeab3.png)
4. 点击右上角出现的批量操作扳手图标  
 ![image](https://global.discourse-cdn.com/meta/original/3X/a/c/ac872035720fa4bd959f0a5324c2b39f1a3b9a8b.png)
5. 点击弹出窗口中的按钮以进行相应更改（设置类别或追加/替换标签）  
 ![image](https://global.discourse-cdn.com/meta/original/3X/9/3/93cf6ae1b4f38707e9d36f11872c43f45fb341c0.png)

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月6日 08:30 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/3 "2019-07-06T08:30:18Z")

</div>

感谢 @wesochuck，我知道这个功能，但我的每个子分类都有超过 1000 个主题，加载和设置它们很困难。因此，我只想设置一个连接到服务器的 SSH 命令行。谢谢大家！

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2019年七月6日 13:18 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/4 "2019-07-06T13:18:03Z")

</div>

这里还有其他一些主题，包含了一些 Rails 命令的示例，用于选择一批帖子并对这些帖子执行某些操作。既然你还没有找到答案，不妨看看这些内容。

我最近太忙了，没有多余的时间亲自处理这个问题。如果你觉得这值得付费，我可以今天为你完成，收费 200 美元；或者下周一完成，收费减半。

编辑：这里是一个起点：

```
 Topic.where(category_id: CURRENT_ID).update_all(category_id: NEW_ID)

```

在执行此操作之前，请务必先进行备份！

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月6日 23:41 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/5 "2019-07-06T23:41:50Z")

</div>

谢谢！我已成功将子类别移回父类别。  
我想为所有包含关键词的主题插入并更新标签。我懂一点控制台命令，但不起作用。您能帮我修复以下控制台命令吗：

> Topic.where(“quận 1 dt”).update\_all(tags=“quận-1”)

> rake posts:update\_tag[“quận 1 dt”,“quận-1”]

我想通过控制台执行此操作，因为我的 Discourse 论坛中有成千上万个主题需要替换。请问应该使用哪个控制台命令来实现此功能？谢谢！

 ![image](https://global.discourse-cdn.com/meta/original/3X/7/6/76153ccf9020b6b730adc7264526722b20cfb96d.png)

非常抱歉！我不是开发人员，也不熟悉 Rails 控制台的专业用法，我会努力多加学习。非常感谢！

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月7日 11:10 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/6 "2019-07-07T11:10:52Z")

</div>

> [@thaidb](#):
>
> 我们是否有命令行可以将某个分类下的所有主题移动到一个新标签？

你好，  
我运行了这条命令但没有生效，能帮我修复一下吗？

> Topic.where(category\_id: CURRENT\_ID).update\_all(tags: ‘quan-1’)

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月8日 04:33 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/7 "2019-07-08T04:33:45Z")

</div>

我运行了这个命令，但没有生效

> UPDATE “topics” SET “tag” = ‘quan-1’ WHERE (“topics”.“deleted\_at” IS NULL) AND “topics”.“category\_id” = 2752

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年七月8日 10:30 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/8 "2019-07-08T10:30:00Z")

</div>

能否通过以下控制台为话题插入或更新标签？

> UPDATE topics SET tag = ‘tag\_content’ WHERE topics.category\_id = Category\_ID\_wanna

---

<div class="post-metadata">

**Author:** ![thaidb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thaidb/32/68488_2.png) [@thaidb](https://meta.discourse.org/u/thaidb)\
**Post date:** [2019年十一月1日 13:35 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/9 "2019-11-01T13:35:34Z")

</div>

你好 Discourse，  
我们能否为所有包含特定字符串的主题分配标签？应该使用什么命令？  
例如：

`UPDATE topics SET tag = 'tag_content' WHERE topics.content = 'a string'`

这样可以吗？🙂

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2019年十一月1日 14:49 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/10 "2019-11-01T14:49:00Z")

</div>

> [@thaidb](#):
>
> 我们能否为所有包含特定字符串的主题分配标签？

可以，相关操作说明在此：[Administrative Bulk Operations](https://meta.discourse.org/t/administrative-bulk-operations/118349#heading--8%E3%80%82)

---

<div class="post-metadata">

**Author:** ![Monte\_Kalisch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/monte_kalisch/32/175020_2.png) [@Monte\_Kalisch](https://meta.discourse.org/u/Monte_Kalisch)\
**Post date:** [2020年十二月3日 01:51 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/11 "2020-12-03T01:51:21Z")

</div>

这很棒，但它并没有移动该分类的线程（即包含该分类信息的那个默认线程），我觉得这很奇怪，更不用说我还找不到任何方法来移动该主题。

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2020年十二月3日 17:54 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/12 "2020-12-03T17:54:35Z")

</div>

> [@Monte\_Kalisch](#):
>
> 它不会移动该分类的讨论主题（即包含该分类信息的默认主题）

在 Discourse 中创建分类时，系统会自动为该分类生成一个“关于”主题。该主题无法被移动。不过，你可以手动将原分类“关于”主题的内容复制到新分类的“关于”主题中。

---

<div class="post-metadata">

**Author:** ![Monte\_Kalisch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/monte_kalisch/32/175020_2.png) [@Monte\_Kalisch](https://meta.discourse.org/u/Monte_Kalisch)\
**Post date:** [2020年十二月3日 18:13 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/13 "2020-12-03T18:13:04Z")

</div>

我明白你的意思，也大致理解了，但为什么情况会是这样并不明显。这些话题包含的内容，如果我将所有内容迁移到一个新类别中，按理说_可以_被移动。我原本在这些话题中有一些有用的内容，只是后来发现了类别嵌套的限制，才决定将它们合并。

我只是提供反馈，让你知晓这一情况。

---

<div class="post-metadata">

**Author:** ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)\
**Post date:** [2020年十二月3日 18:17 UTC](https://meta.discourse.org/t/how-to-move-all-topics-of-1-category-to-new-tag/122141/14 "2020-12-03T18:17:26Z")

</div>

> [@Monte\_Kalisch](#):
>
> 我只是提供反馈，以便您知晓。

谢谢！这很有用的反馈。Discourse 用户界面中没有显示任何内容来告知您“关于”主题无法移动的原因。
