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 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…
Reference in New Issue