What is the order of ActiveRecord callbacks and validations?

前端 未结 2 741
旧巷少年郎
旧巷少年郎 2020-12-04 09:30

I was wondering in what order are callbacks and validations called when an ActiveRecord object is created.

Let’s say I have some custom validations & callbacks l

相关标签:
2条回答
  • 2020-12-04 09:36

    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.

    0 讨论(0)
  • 2020-12-04 09:55

    Rails 5

    Here is a list with all the available Active Record callbacks, listed in the same order in which they will get called during the respective operations:

    1 Creating an Object

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

    2 Updating an Object

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

    3 Destroying an Object

    • before_destroy
    • around_destroy
    • after_destroy
    • after_commit/after_rollback

    after_save runs both on create and update, but always after the more specific callbacks after_create and after_update, no matter the order in which the macro calls were executed.

    before_destroy callbacks should be placed before dependent: :destroy associations (or use the prepend: true option), to ensure they execute before the records are deleted by dependent: :destroy.

    0 讨论(0)
提交回复
热议问题