Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between `after_create` and `after_save` and when to use which?

after_create only works once - just after the record is first created.

after_save works every time you save the object - even if you're just updating it many years later

So if you want to do this email operation only just the once (and then never again) then use after_create.

If you want to do it every time the object is saved, then do it in after_save


From the docs:

after_create()

Is called after Base.save on new objects that haven‘t been saved yet (no record exists).

after_save()

Is called after Base.save (regardless of whether it‘s a create or update save).


after_save()

Works fine when you have to save models that do not save very often. For this particular example of changing records frequently it would be advisable to use

 after_commit()

make sure that the model is saved in the database before the action is executed after_commit :calculate_credit_score

def calculate_credit_score
     #Call a Cron job
end