diff --git a/callbacks/update.go b/callbacks/update.go index 138bb388b..c9fa3830c 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -33,11 +33,8 @@ func SetupUpdateReflectValue(db *gorm.DB) { func BeforeUpdate(db *gorm.DB) { if db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && (db.Statement.Schema.BeforeSave || db.Statement.Schema.BeforeUpdate) { callMethod(db, func(value interface{}, tx *gorm.DB) (called bool) { - rv := reflect.ValueOf(value) - for rv.Kind() == reflect.Ptr { - rv = rv.Elem() - } // save a copy before executing the hook so that can find out which fields were modified after the hook is executed. + rv := reflect.Indirect(reflect.ValueOf(value)) rvClone := reflect.New(rv.Type()).Elem() rvClone.Set(rv)