it-swarm.com.de

Ruby on Rails Callback, was ist der Unterschied zwischen: before_save und: before_create?

Könnten Sie im Detail erklären, was die :before_save Und :before_create Ruby on Rails Callbacks sind und was sie zu tun haben mit Rails Validierungen? Erfolgt die Validierung nach :before_save oder :before_create?

174
Agung Prasetyo

Bei einer Erstellungsoperation unter Rails gibt es sechs Rückrufe vor der Datenbankoperation und zwei nach der Datenbankoperation. In der Reihenfolge sind dies:

  1. before_validation
  2. before_validation_on_create
  3. after_validation
  4. after_validation_on_create
  5. before_save
  6. before_create

    DATABASE INSERT
  7. after_create
  8. after_save

Aktualisierungsvorgänge haben genau die gleiche Menge, außer dass update anstelle von create überall gelesen wird (und UPDATE anstelle von EINFÜGEN ).

Daran können Sie erkennen, dass die Validierung vor den Rückrufen before_save Und before_create Durchgeführt wird.

Das before_save Steht kurz vor dem before_create. Nach meinem besten Wissen passiert nichts zwischen ihnen; before_save wird jedoch auch bei Aktualisierungsvorgängen ausgelöst, während before_create nur bei Erstellungsvorgängen ausgelöst wird.

352
Chowlett

before_save wird jedes Mal aufgerufen, wenn ein Objekt gespeichert wird. Also für neue und bestehende Objekte. (Aktion erstellen und aktualisieren)

before_create nur vor der Erstellung. Also nur für neue Objekte (Aktion erstellen)

129
Michael Koper

before_create vs before_save :on => :create

Manchmal muss man auf die Reihenfolge der Rückrufe achten

Weitere Informationen finden Sie hier: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/

2
23inhouse