fix: embedded default value (#5540)
This commit is contained in:
		
							parent
							
								
									bab3cd1724
								
							
						
					
					
						commit
						06e174e24d
					
				| @ -403,18 +403,14 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field { | ||||
| 				} | ||||
| 
 | ||||
| 				if ef.PrimaryKey { | ||||
| 					if val, ok := ef.TagSettings["PRIMARYKEY"]; ok && utils.CheckTruth(val) { | ||||
| 						ef.PrimaryKey = true | ||||
| 					} else if val, ok := ef.TagSettings["PRIMARY_KEY"]; ok && utils.CheckTruth(val) { | ||||
| 						ef.PrimaryKey = true | ||||
| 					} else { | ||||
| 					if !utils.CheckTruth(ef.TagSettings["PRIMARYKEY"], ef.TagSettings["PRIMARY_KEY"]) { | ||||
| 						ef.PrimaryKey = false | ||||
| 
 | ||||
| 						if val, ok := ef.TagSettings["AUTOINCREMENT"]; !ok || !utils.CheckTruth(val) { | ||||
| 							ef.AutoIncrement = false | ||||
| 						} | ||||
| 
 | ||||
| 						if ef.DefaultValue == "" { | ||||
| 						if !ef.AutoIncrement && ef.DefaultValue == "" { | ||||
| 							ef.HasDefaultValue = false | ||||
| 						} | ||||
| 					} | ||||
|  | ||||
| @ -168,3 +168,29 @@ func TestEmbeddedRelations(t *testing.T) { | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestEmbeddedTagSetting(t *testing.T) { | ||||
| 	type Tag1 struct { | ||||
| 		Id int64 `gorm:"autoIncrement"` | ||||
| 	} | ||||
| 	type Tag2 struct { | ||||
| 		Id int64 | ||||
| 	} | ||||
| 
 | ||||
| 	type EmbeddedTag struct { | ||||
| 		Tag1 Tag1 `gorm:"Embedded;"` | ||||
| 		Tag2 Tag2 `gorm:"Embedded;EmbeddedPrefix:t2_"` | ||||
| 		Name string | ||||
| 	} | ||||
| 
 | ||||
| 	DB.Migrator().DropTable(&EmbeddedTag{}) | ||||
| 	err := DB.Migrator().AutoMigrate(&EmbeddedTag{}) | ||||
| 	AssertEqual(t, err, nil) | ||||
| 
 | ||||
| 	t1 := EmbeddedTag{Name: "embedded_tag"} | ||||
| 	err = DB.Save(&t1).Error | ||||
| 	AssertEqual(t, err, nil) | ||||
| 	if t1.Tag1.Id == 0 { | ||||
| 		t.Errorf("embedded struct's primary field should be rewrited") | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Cr
						Cr