after_create
和after_save
是否与每项功能相同?
我希望在创建帐户后使用用户的电子邮件进行操作。
我想在保存到数据库中时执行该操作。
最好使用:after_create
或after_save
?
答案 0 :(得分:207)
after_create
仅适用一次 - 就在首次创建记录之后。
after_save
都会起作用 - 即使您多年后才更新它
因此,如果您只想进行一次这样的电子邮件操作(然后再从不再这样做),那么请使用after_create
。
如果您希望每隔时间保存对象,请在after_save
答案 1 :(得分:91)
来自the docs:
after_create()
之后被召唤
Base.save
关于没有的新对象 已保存(无记录)。
after_save()
在
Base.save
之后调用 (不管它是否是创造 或更新保存)。
答案 2 :(得分:1)
after_save()
当你必须保存不经常保存的模型时,工作正常。 对于频繁更改记录的这个特定示例,建议使用
after_commit()
确保在执行操作之前将模型保存在数据库中 after_commit:calculate_credit_score
def calculate_credit_score
#Call a Cron job
end