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

后端 未结 3 449
独厮守ぢ
独厮守ぢ 2020-12-04 15:19

Are after_create and after_save the same as per functionality?

I want to do an operation with the email of a user after its account creatio

相关标签:
3条回答
  • 2020-12-04 15:37

    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

    0 讨论(0)
  • 2020-12-04 15:40

    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).

    0 讨论(0)
  • 2020-12-04 15:40
    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
    
    0 讨论(0)
提交回复
热议问题