A repository of tips and tricks (in both English and French) curated by Mirego’s engineering team.
  • rails
  • ruby

Enlever la gem “paranoia” d’une application Rails

Quelques choses pratiques à savoir lorsqu’on retire la gem paranoia d’une application Rails.

Lorsqu’on ajoute acts_as_paranoid à un modèle, la gem ajoute un default_scope à ce-dernier qui fait en sorte que les records qui ont une valeur dans leur colonne deleted_at ne sont jamais récupérés par défaut.

Idéalement, avant de retirer la gem des modèles, on devrait effectuer la modification suivante pour vraiment supprimer les records supprimés :

# Models that previously had (or will soon lose) `acts_as_paranoid`
paranoid_models = [User, Project, Behavior]

paranoid_models.each do |model|
  Rails.logger.info("Destroy soft-deleted #{model} records")
  model.where.not(deleted_at: nil).destroy_all
end

Ensuite, on peut déployer la release qui retire la gem du code. On peut ensuite rouler la modification à nouveau — si un soft-delete a eu lieu entre la première modification et le déploiement.