Pourriez-vous expliquer en détail ce que le :before_save
et :before_create
Ruby sur Rails sont des rappels et ce qu’ils ont à faire avec Rails validations. La validation est effectuée après :before_save
ou :before_create
?
Dans une opération de création sous Rails, il existe six rappels avant l'opération de base de données et deux après. Dans l'ordre, ce sont:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
Les opérations de mise à jour ont exactement le même ensemble, sauf read update
au lieu de create
partout (et UPDATE au lieu de INSÉREZ ).
A partir de là, vous pouvez voir que la validation est effectuée avant le before_save
et before_create
rappels.
Le before_save
se produit légèrement avant le before_create
. À ma connaissance, rien ne se passe entre eux. mais before_save
se déclenche également lors des opérations de mise à jour, tandis que before_create
ne tirera que sur Crée.
before_save
est appelé à chaque fois qu'un objet est enregistré. Donc, pour les objets nouveaux et existants. (créer et mettre à jour l'action)
before_create
seulement avant la création. Donc seulement pour les nouveaux objets (créer une action)
before_create
contre before_save :on => :create
Parfois, vous devez faire attention à l'ordre des rappels
Voir ici pour plus de détails: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/