What is the order of ActiveRecord callbacks and validations?

The most-up-to-date version of this list for the latest version of Rails can be found in the ActiveRecord::Callbacks documentation. The lists for Rails 4, 3 & 2 are below.

Rails 4

The most up-to-date version of this list can be found in the Rails 4 Guides.

Creating an object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_create
  • around_create
  • after_create
  • after_save
  • after_commit/after_rollback

Updating an object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_update
  • around_update
  • after_update
  • after_save
  • after_commit/after_rollback

Destroying an object

  • before_destroy
  • around_destroy
  • after_destroy
  • after_commit/after_rollback

Rails 3

The most up-to-date version of this list can be found in the Rails 3 Guides.

Creating an object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_create
  • around_create
  • after_create
  • after_save

Updating an object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_update
  • around_update
  • after_update
  • after_save

Destroying an object

  • before_destroy
  • around_destroy
  • after_destroy

Rails 2

The most up-to-date version of this list can be found in the Rails 2.3 Guides

Creating an object

  • before_validation
  • before_validation_on_create
  • after_validation
  • after_validation_on_create
  • before_save
  • before_create
  • INSERT operation
  • after_create
  • after_save

Updating an object

  • before_validation
  • before_validation_on_update
  • after_validation
  • after_validation_on_update
  • before_save
  • before_update
  • UPDATE operation
  • after_update
  • after_save

Destroying an object

  • before_destroy
  • DELETE operation
  • after_destroy

Since you need to first validate the reference_code, the assign_reference method can be called in the after_validation callback or any callback appearing after it in the list I provided above.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)