Force recount of topics in category after moving them


Can the topic count for a category be forced to update after the topics have been moved to a different category?

I used this method to move topics around after merging two forums, but the counts are still off after 1.5 days.

Moved topics to new category via ruby console, topic counts wrong on old category
(Jeff Atwood) #2

Shouldn’t the category counts rebuild after a day @neil?

(Felix Freiberger) #3

It would be nice if they did! However, that didn’t work out for us when we did a similar move.

The following Ruby code, executed in the Rails console, will either fix the issue or set your database on fire :fire:, so backup accordingly :wink:

Category.find_each { |c|
    c.topic_count = Topic.where(category: c).count - 1 # -1 for about post!

(I’d still love for these to be re-counted occasionally, just as I’d do for post counts :slight_smile:)

Re-purposing a Discourse installation for a yearly event
(Neil Lalonde) #4

Yes this is happenings once a day, doing this to update the counts:

Seems to work for me.

@fefrei @omarfilip Please go to sidekiq scheduler (/sidekiq/scheduler) and see what the last run of CategoryStats shows.


I’ve triggered mine manually yesterday so the scheduler won’t mean much right now:

The manual triggering of CategoryStats did not change the counts, though.

I ran Felix’s ruby code earlier today and that dropped the topic counts in the empty categories. It did not increase the topic count elsewhere like I thought it would.

(Felix Freiberger) #6

I had also triggered that job manually, as far as I recall. It completed successfully, but had no effect.

(Jeremy M) #7

Mine also ran but didn’t change the counts. I also have one which is -1 as well.

I will run the code from @fefrei and see if that makes a difference.

Edit: running the code worked in the rails console