forked from mirror/gorm
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…
Reference in New Issue