[Ruby on Rails] À propos du rappel Active Record

Qu'est-ce qu'un rappel?

À 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.

Comment enregistrer un rappel

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é.

type

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 × ×

Autres exemples d'utilisation

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).

Points à surveiller lors de votre rappel

référence

Recommended Posts

[Ruby on Rails] À propos du rappel Active Record
Record d'apprentissage de Ruby on rails -2020.10.03
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Record d'apprentissage de Ruby on rails -2020.10.06
[Rails] À propos du hachage actif
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby On Rails] À propos de RubyAws :: Sigv4 :: Errors :: MissingCredentialsError
Création de portfolio Ruby on Rails
[Ruby on Rails] Supprimer les images s3 avec Active Strage
[Ruby on Rails] Debuck (binding.pry)
Annuler la migration de Ruby on Rails
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
Qu'est-ce que Rails Active Record?
Recherche d'enregistrements Ruby on Rails, création sinon méthode find_or_create_by
Une note sur la fonction de départ de Ruby on Rails
[Note] À propos du problème Fizz_Buzz (Fonctionnement de Ruby on Rails)
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Méthode d'aide pratique
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
À propos des rails 6
[Ruby on Rails] Introduction des données initiales
[Ruby on Rails] Fonction de recherche (non sélectionnée)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Ruby on Rails6 Guide pratique cp13 ~ cp15 [Mémo]
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] Vérification du code à l'aide de Rubocop-airbnb
[Ruby on Rails] 1 modèle CRUD (routage principal)
Méthode d'installation de Ruby on Rails [édition Mac]
Modèle [Ruby on Rails], commande de terminal de contrôleur
Commande de création / suppression de modèle Ruby on Rails