钩子 (Hooks)
Hook 是在创建、查询、更新、删除等操作之前或之后调用的函数。
创建钩子
func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
u.UUID = uuid.New()
if u.Role == "admin" {
return errors.New("invalid role")
}
return
}
支持的钩子:
BeforeSave,BeforeCreate,AfterCreate,AfterSaveBeforeUpdate,AfterUpdateBeforeDelete,AfterDeleteAfterFind
跳过钩子
如果你想跳过钩子方法,可以使用 SkipHooks 会话模式。
db.Session(&gorm.Session{SkipHooks: true}).Create(&user)