Error message when set primary key

This commit is contained in:
Jinzhu 2013-11-02 18:25:01 +08:00
parent 2d40175651
commit 5b671a84b6
3 changed files with 14 additions and 7 deletions

4
do.go
View File

@ -159,7 +159,9 @@ func (s *Do) create() {
if !s.hasError() {
result := reflect.Indirect(reflect.ValueOf(s.value))
setFieldValue(result.FieldByName(s.model.primaryKey()), id)
if !setFieldValue(result.FieldByName(s.model.primaryKey()), id) {
fmt.Printf("Can't set primary key for %#v\n", result.Interface())
}
s.saveAfterAssociations()
s.err(s.model.callMethod("AfterCreate"))

View File

@ -1002,15 +1002,17 @@ type Category struct {
}
type Post struct {
Id int64
Title string
Body string
Comments []Comment
Category Category
Id int64
CategoryId int64
Title string
Body string
Comments []Comment
Category Category
}
type Comment struct {
Id int64
PostId int64
Content string
Post Post
}

View File

@ -309,7 +309,7 @@ func (m *Model) afterAssociations() (fields []Field) {
return
}
func setFieldValue(field reflect.Value, value interface{}) {
func setFieldValue(field reflect.Value, value interface{}) bool {
if field.IsValid() && field.CanAddr() {
switch field.Kind() {
case reflect.Int, reflect.Int32, reflect.Int64:
@ -320,5 +320,8 @@ func setFieldValue(field reflect.Value, value interface{}) {
default:
field.Set(reflect.ValueOf(value))
}
return true
} else {
return false
}
}