2000件のトピックがあるタグは削除できません

レールコンソールでそれらのタグを関連トピックから削除するには、2つの方法があると思います。一方はもう一方よりも「ソフト」です。最初にバックアップを取ることをお勧めします。レールコマンドについては、こちらをご覧ください: https://meta.discourse.org/t/administrative-bulk-operations/118349。


  1. 各タグについて、レールコンソールに入力します:
cd /var/discourse
./launcher enter app
rails c
  1. タグを見つけて、トピックから削除します。
TAG_NAME = "your_tag_name"   # タグ名に置き換えてください
TAG = Tag.find_by(name: TAG_NAME)
Topic.joins(:tags).where(tags: { name: TAG_NAME }).each do |topic|
  topic.tags.delete(TAG)
  topic.save
end
  1. 2番目のタグについても繰り返します。
  2. その後、UIからそれらのタグを削除できるようになるはずです。

代替の高速な方法(よりリスクが高い)(私は自分で上記の方法を取ります)

しかし、ステップ2と4の代わりに、レールコンソールに入力した後、各タグに対して次を行うこともできると思います。

t = Tag.find_by_name('your_tag_name')
t.destroy!
「いいね!」 3