RuboCop のアドバイスは良いですが、このエラーの原因ではないと思います。(言及されている「リスク」とは、高トラフィックのテーブルのロックであり、本番環境のトラフィックに影響を与えるものです。テスト環境でエラーを引き起こすようなものではありません。)
おそらく、RAILS_ENV=test bin/rake db:drop db:create db:migrate (つまり、locations プラグインを有効にして、データベースを完全にゼロからマイグレーションする)を実行することで、ローカルでも同じエラーを再現できるはずです。
問題は、マイグレーション内で Rake タスクを呼び出している ことだと疑っています。コアでは、奇妙な副作用が発生する可能性があるため、マイグレーションで何らかのアプリケーションコードを実行することは一般的に避けています。生の SQL を使用するのが最善です。
この場合、ActiveRecord のスキーマキャッシュがマイグレーションの早い段階で(topics.off_topic_count がまだ存在する時に)読み込まれると想定しています。その後、Rake タスクが実行されると、古いスキーマキャッシュで実行されるため、ActiveRecord は存在しないカラムをロードしようとします。
Rake タスクを呼び出す前に ActiveRecord::Base.clear_cache! を追加することで軽減できるかもしれませんが、それは推奨ではありません
。最善の方法は、Rake タスクの呼び出しを完全に避けることです。データベース内の何かを操作する必要がある場合は、マイグレーション内で生の SQL を使用してください。