Merge 22a415df150de996c80840b9456b1669675853f0 into cb7c41e0b6e3863e7934a50c0aed76b8cfb61bfd

This commit is contained in:
bigpigeon 2018-02-10 15:31:05 +00:00 committed by GitHub
commit 37b223bb50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -81,6 +81,7 @@ type StructField struct {
Struct reflect.StructField
IsForeignKey bool
Relationship *Relationship
Offset uintptr
}
func (structField *StructField) clone() *StructField {
@ -97,6 +98,7 @@ func (structField *StructField) clone() *StructField {
TagSettings: map[string]string{},
Struct: structField.Struct,
IsForeignKey: structField.IsForeignKey,
Offset: structField.Offset,
}
if structField.Relationship != nil {
@ -167,6 +169,7 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
Names: []string{fieldStruct.Name},
Tag: fieldStruct.Tag,
TagSettings: parseTagSetting(fieldStruct.Tag),
Offset: fieldStruct.Offset,
}
// is ignored field
@ -210,6 +213,7 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
} else if _, ok := field.TagSettings["EMBEDDED"]; ok || fieldStruct.Anonymous {
// is embedded struct
for _, subField := range scope.New(fieldValue).GetModelStruct().StructFields {
subField.Offset += fieldStruct.Offset
subField = subField.clone()
subField.Names = append([]string{fieldStruct.Name}, subField.Names...)
if prefix, ok := field.TagSettings["EMBEDDED_PREFIX"]; ok {