Ruby on Rails Callback, what is difference between :before_save and :before_create?

ruby, ruby-on-rails, ruby-on-rails-3, validation

Solution

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.

Problem

Could you explain in detail what the `:before_save` and `:before_create` Ruby on Rails callbacks are, and what they have to do with Rails validations? Does validation occur after `:before_save` or `:before_create`?

Original source

Related problems