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 ef.PrimaryKey { | ||||||
| 					if val, ok := ef.TagSettings["PRIMARYKEY"]; ok && utils.CheckTruth(val) { | 					if !utils.CheckTruth(ef.TagSettings["PRIMARYKEY"], ef.TagSettings["PRIMARY_KEY"]) { | ||||||
| 						ef.PrimaryKey = true |  | ||||||
| 					} else if val, ok := ef.TagSettings["PRIMARY_KEY"]; ok && utils.CheckTruth(val) { |  | ||||||
| 						ef.PrimaryKey = true |  | ||||||
| 					} else { |  | ||||||
| 						ef.PrimaryKey = false | 						ef.PrimaryKey = false | ||||||
| 
 | 
 | ||||||
| 						if val, ok := ef.TagSettings["AUTOINCREMENT"]; !ok || !utils.CheckTruth(val) { | 						if val, ok := ef.TagSettings["AUTOINCREMENT"]; !ok || !utils.CheckTruth(val) { | ||||||
| 							ef.AutoIncrement = false | 							ef.AutoIncrement = false | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
| 						if ef.DefaultValue == "" { | 						if !ef.AutoIncrement && ef.DefaultValue == "" { | ||||||
| 							ef.HasDefaultValue = false | 							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