190 votes

Ruby on Rails Rappel, quelle est la différence entre :before_save et :before_create?

pourriez-vous m'expliquer en détail sur :before_save et :before_create en rappel RoR ? Et que faire avec les rails de validation ? Est la validation fonctionne après :before_save ou :before_create ?

371voto

Chowlett Points 19889

Dans une opération de création, sous les Rails, il y a six rappels avant l'opération de base de données, et deux après. Dans l'ordre, ce sont:

  1. before_validation
  2. before_validation_on_create
  3. after_validation
  4. after_validation_on_create
  5. before_save
  6. before_create
  7. BASE DE DONNÉES INSÉRER
  8. after_create
  9. after_save

Opérations de mise à jour ont exactement le même jeu, à l'exception de lecture update au lieu de create partout (et mise à JOUR au lieu d' INSÉRER).

À partir de là, vous pouvez voir que la validation est effectuée avant l' before_save et before_create rappels.

L' before_save se produit un peu avant de l' before_create. Au meilleur de ma connaissance, rien ne se passe entre eux; mais, before_save sera également le feu sur des opérations de mise à Jour, tout en before_create ne le feu sur les Crée.

140voto

Michael Koper Points 3507

before_save est appelée à chaque fois qu'un objet est enregistré. Donc, pour les objets nouveaux et existants. (création et mise à jour)

before_create seulement avant la création. Donc uniquement pour les nouveaux objets (action de création)

3voto

23inhouse Points 820

before_create vs 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/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X