OCD numérique satisfait via rails c : ces opérations ActiveRecord directes sont-elles totalement sûres ?

Bonjour à tous,

En tant qu’auto-hébergeur, je suis récemment tombé dans le piège de la « TOC numérique ». J’avais quelques catégories et tags supprimés datant de mes premières phases de test, et je tenais vraiment à récupérer ces identifiants propres à un seul chiffre (comme l’ID de catégorie 2 et l’ID de tag 3) plutôt que de laisser des trous dans ma base de données.

Je sais que l’interface utilisateur ne prend pas en charge cette opération, j’ai donc accédé à la console Rails (./launcher enter app → rails c) pour remettre les choses en place manuellement. Actuellement, tout semble et fonctionne parfaitement sur le frontend, mais je suis curieux de savoir si les experts en bases de données présents ici perçoivent des dangers cachés ou des bombes à retardement à long terme à faire cela.

Voici le workflow exact et détaillé que j’ai exécuté :

1. Recréation de la catégorie supprimée avec son ancien ID et tous ses attributs : Au lieu de simplement forcer un ID, j’ai fourni les attributs essentiels afin que l’enregistrement soit complet.

Ruby

Category.create!(
  id: 2, 
  name: "Site Feedback", 
  color: "0088CC", 
  text_color: "FFFFFF", 
  user_id: -1 # Utilisateur système
)

2. Récupération du sujet d’origine et liaison en tant que description de la catégorie :

Ruby

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

3. Nettoyage du sous-type de sujet (restauration de la valeur par défaut d’origine) : J’ai vérifié d’autres catégories par défaut et j’ai remarqué que leurs sujets de description utilisent simplement nil, je l’ai donc réinitialisé à l’état d’usine.

Ruby

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

4. Recréation en masse des anciens tags pour combler les lacunes d’ID :

Ruby

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

Ma question principale : Je comprends parfaitement qu’il n’y a aucun besoin pratique de faire cela, à part satisfaire ma propre TOC. Cependant, strictement d’un point de vue structurel, les méthodes de base d’ActiveRecord comme .update! et .create! déclenchent-elles en toute sécurité tous les callbacks Discourse nécessaires (indexation de la recherche, mises à jour du cache Redis, tâches Sidekiq, routage, etc.) ? Ou ai-je accidentellement contourné une logique interne cruciale qui pourrait casser une future migration de schéma ?

Merci de satisfaire ma curiosité !