¿Cuál es la diferencia entre " después de crear` y `después de guardar` y cuándo utilizar?
Son after_create
y after_save
lo mismo que por funcionalidad?
Quiero hacer una operación con el correo electrónico de un usuario después de la creación de su cuenta.
Quiero hacer esa operación cuando se guarde en la base de datos.
Que es preferible usar: after_create
o after_save
?
3 answers
after_create
solo funciona una vez, justo después de crear el registro por primera vez.
after_save
funciona cada vez que guardas el objeto, incluso si lo estás actualizando muchos años después
Entonces, si desea hacer esta operación de correo electrónico solo una vez (y luego nunca más), use after_create
.
Si quieres hacerlo cada vez que se guarda el objeto, hazlo en after_save
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-18 00:10:56
De los documentos :
after_create()
Se llama después
Base.save
en objetos nuevos que no lo han hecho se ha guardado todavía (no existe registro).
after_save()
Se llama después de
Base.save
(independientemente de si es un crear o actualizar guardar).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-24 17:33:45
after_save()
Funciona bien cuando tiene que guardar modelos que no guardan muy a menudo. Para este ejemplo particular de cambio de registros con frecuencia sería aconsejable utilizar
after_commit()
Asegúrese de que el modelo se guarda en la base de datos antes de ejecutar la acción after_commit: calculate_credit_score
def calculate_credit_score
#Call a Cron job
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-22 08:05:03