Не могли бы вы подробно объяснить, что такое обратные вызовы :before_save
и :before_create
Ruby on Rails, и что они должны делать с проверкой Rails? Выполняется ли проверка после :before_save
или :before_create
?
Ruby on Rails Callback, какая разница между: before_save и: before_create?
Ответ 1
В операции создания под Rails перед операцией базы данных есть шесть обратных вызовов и два после. В порядке:
-
before_validation
-
before_validation_on_create
-
after_validation
-
after_validation_on_create
-
before_save
-
before_create
ВСТАВКА БАЗА ДАННЫХ -
after_create
-
after_save
Операции обновления имеют точно такой же набор, за исключением read update
вместо create
всюду (и UPDATE вместо INSERT).
Из этого вы можете видеть, что проверка выполняется перед обратными вызовами before_save
и before_create
.
before_save
происходит немного раньше before_create
. Насколько мне известно, между ними ничего не происходит; но before_save
также запускает операции обновления, а before_create
будет запускаться только при создании.
Ответ 2
before_save
вызывается каждый раз, когда объект сохраняется. Итак, для новых и существующих объектов. (создать и обновить действие)
before_create
только до создания. Так что только для новых объектов (создать действие)
Ответ 3
before_create
vs before_save :on => :create
Иногда вы должны быть осторожны с порядком обратных вызовов
Подробнее см. здесь: http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/