diff --git a/callbacks/update.go b/callbacks/update.go index 7d5ea4a4..45960b74 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -235,8 +235,8 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) { case reflect.Struct: set = make([]clause.Assignment, 0, len(stmt.Schema.FieldsByDBName)) for _, dbName := range stmt.Schema.DBNames { - if field := updatingSchema.LookUpField(dbName); field != nil && field.Updatable { - if !field.PrimaryKey || !updatingValue.CanAddr() || stmt.Dest != stmt.Model { + if field := updatingSchema.LookUpField(dbName); field != nil { + if field.Updatable && (!field.PrimaryKey || !updatingValue.CanAddr() || stmt.Dest != stmt.Model) { if v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && (!restricted || (!stmt.SkipHooks && field.AutoUpdateTime > 0))) { value, isZero := field.ValueOf(updatingValue) if !stmt.SkipHooks && field.AutoUpdateTime > 0 {