Удовлетворение «цифрового ОКР» через rails c: эти прямые операции с ActiveRecord полностью безопасны?

Привет, всем!

Как человек, который хостит свой инстанс, я недавно подхватил «цифровое ОКР». У меня остались удалённые категории и теги от ранних дней тестирования, и мне очень хотелось вернуть эти чистые однозначные ID (например, ID категории 2 и ID тега 3), вместо того чтобы оставлять пробелы в базе данных.

Я знаю, что интерфейс это не поддерживает, поэтому я зашёл в консоль Rails (./launcher enter app → rails c), чтобы вручную всё восстановить. Сейчас на фронтенде всё выглядит и работает идеально, но мне любопытно, видят ли эксперты по базе данных здесь какие-то скрытые опасности или долгосрочные «мины замедленного действия» в таком подходе.

Вот точный, детальный рабочий процесс, который я выполнил:

1. Пересоздание удалённой категории с её старым ID и полными атрибутами: Вместо того чтобы просто принудительно задать ID, я предоставил необходимые атрибуты, чтобы запись была полной.

Ruby

Category.create!(
  id: 2, 
  name: "Site Feedback", 
  color: "0088CC", 
  text_color: "FFFFFF", 
  user_id: -1 # Системный пользователь
)

2. Восстановление исходной темы и привязка её как описания категории:

Ruby

Topic.with_deleted.find(1).recover!
Category.find(2).update!(topic_id: 1)

3. Очистка подтипа темы (возврат к стандартному значению по умолчанию): Я проверил другие категории по умолчанию и заметил, что темы их описаний просто используют nil, поэтому я вернул его к заводскому состоянию.

Ruby

Topic.find(1).update!(subtype: nil)

4. Массовое пересоздание старых тегов для заполнения пробелов в ID:

Ruby

Tag.create!([
  { id: 3, name: "private-school" },
  { id: 7, name: "tennis" }
])

Мой главный вопрос: Я полностью понимаю, что практической необходимости в этом нет, кроме как удовлетворить моё собственное ОКР. Однако, строго с точки зрения структуры, безопасно ли то, что базовые методы ActiveRecord, такие как .update! и .create!, вызывают все необходимые колбэки Discourse (индексирование поиска, обновления кэша Redis, задачи Sidekiq, маршрутизацию и т. д.)? Или я случайно обошёл какую-то важную внутреннюю логику, которая может сломать будущую миграцию схемы?

Спасибо за то, что удовлетворили моё любопытство!