À partir du guide Rails
Les callbacks sont des méthodes appelées à des moments précis du cycle de vie d'un objet. Les rappels vous permettent d'écrire du code qui est toujours exécuté lorsqu'un objet Active Record est créé / enregistré / mis à jour / supprimé / validé / lu depuis la base de données, etc.
Les rappels d'enregistrement actif génèrent des événements avant et après lorsqu'un objet d'enregistrement actif tel qu'un modèle est mis à jour ou supprimé et que son état change. Tout traitement peut être effectué dans l'événement.
Exemple) Sortie d'un journal lorsque les données des membres sont supprimées.
app/models/member.rb
class Member < ApplicationRecord
Abréviation
after_destroy do
Rails.logger.info "Member is deleted: #{self.attributes}"
end
end
Le processus dans ʻafter_destroy` est exécuté lorsque le membre est supprimé.
Vous trouverez ci-dessous quelques exemples de rappels disponibles dans Active Record. Before_ peut définir le traitement avant le déclencheur, around_ peut définir le traitement avant et après le déclencheur, et after_ peut définir le traitement après le déclencheur. S'il s'agit de before_validation, il se produit avant le processus de validation effectué par create et update.
Point de rappel | create | update | destroy |
---|---|---|---|
before_validation | ○ | ○ | × |
after_validation | ○ | ○ | × |
before_save | ○ | ○ | × |
around_save | ○ | ○ | × |
after_save | ○ | ○ | × |
before_create | ○ | × | × |
around_create | ○ | × | × |
after_create | ○ | × | × |
before_update | ○ | ○ | × |
around_update | ○ | ○ | × |
after_update | ○ | ○ | × |
before_destroy | × | × | ○ |
around_destroy | × | × | ○ |
after_destroy | × | × | ○ |
Pendant le développement, j'ai parfois voulu vérifier le comportement lorsque le processus de suppression a échoué, j'ai donc pu le faire échouer en procédant comme suit.
app/models/member.rb
class Member < ApplicationRecord
Abréviation
before_destroy { throw(:abort) }
end
Le traitement du rappel peut être arrêté intentionnellement en écrivant throw (: abort)
.
Recommended Posts