How to move all topics of 1 category to new tag

Hello team discourse,
Do we have command line in order to move all topics of 1 category to new tag?
Do we have command line move all topics of subcategory to parent category?

  1. Navigate to the category with the posts you’d like to change
  2. Toggle the bulk select tool (upper left hand column header)
  3. Click the Select All button
  4. Click the Bulk Action wrench that appears on the upper right hand side
  5. Click the button in the pop-up to make the appropriate change (Set Category or Append/Replace Tags)

Thank @wesochuck, i know this feauture but each my subcategory have more 1000 topics difficult to load and setup them, so i wanna setup only a comand line ssh to server. Thank everyone!

There are some other topics here with examples of rails commands to select a bunch of posts and do something to those posts. Since you don’t have an answer yet you might look for those.

I’ve been too busy to spend spare time on this one myself. If it’s worth money to you I could do this for you for $200 today or half that on Monday.

EDIT: Here’s a start:

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

You’ll want to take a backup before doing that!


Thank you! i moved subcategory come back parent category success.
I wanna insert and update all topics have a keyword to a tag, i know a little console but not effect, can you fix console same:

Topic.where(“quận 1 dt”).update_all(tags=“quận-1”)

rake posts:update_tag[“quận 1 dt”,“quận-1”]

I wanna do this action by consale, because my discourse have thousand topic to replace. What console to do this feature? Thank you!

Sorry so much! Im not a developer and don’t follow rails console professional, i will try study more. Thank you so much!

I run this comand but note effect, can you help me fix this command?

Topic.where(category_id: CURRENT_ID).update_all(tags: ‘quan-1’)

I run this command but not effect

UPDATE “topics” SET “tag” = ‘quan-1’ WHERE (“topics”.“deleted_at” IS NULL) AND “topics”.“category_id” = 2752

Can we insert or update tag for topic by below console?

UPDATE topics SET tag = ‘tag_content’ WHERE topics.category_id = Category_ID_wanna

Hello Discourse,
can we assign tag for all topic have a string, and what command can do it?

UPDATE topics SET tag = ‘tag_content’ WHERE topics.content= "a string"

Can be? :slight_smile:

1 Like

Yes, instructions for doing that are here: Administrative Bulk Operations.


This is great, but it does not move the category’s thread (the default one that has the info about it) which I found odd, not to mention that I can’t find any way to actually move that topic.

1 Like

When you create a category on Discourse, an “About” topic is automatically created for the category. That topic cannot be moved. You could manually copy the content of the category’s About topic to the new category’s About topic though.


I understand what you’re saying and I sorta get it, but it’s not obvious why that would be the case. It’s a topic that contains contents that arguably could be moved if I’m moving everything to a new caetgory. I had useful content in those topics and am just collapsing things down because I later discovered the limitation on nesting categories.

I’m just providing feedback so you’re aware.


Thanks! That is useful feedback. There is nothing displayed in the Discourse user interface that lets you know why the About topics can’t be moved.