Ruby on Rails Callback, what is difference between :before_save and :before_create?
In a create operation under Rails, there are six callbacks before the database operation, and two after. In order, these are:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
-
before_create
DATABASE INSERT after_create
after_save
Update operations have exactly the same set, except read update
instead of create
everywhere (and UPDATE instead of INSERT).
From this, you can see that validation is carried out before the before_save
and before_create
callbacks.
The before_save
occurs slightly before the before_create
. To the best of my knowledge, nothing happens between them; but before_save
will also fire on Update operations, while before_create
will only fire on Creates.
before_save
is called every time an object is saved. So for new and existing objects. (create and update action)
before_create
only before creation. So only for new objects (create action)
before_create
vs before_save :on => :create
Sometimes you have to be careful of the order of the callbacks
See here for more details:
http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/