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() { if !s.hasError() {
result := reflect.Indirect(reflect.ValueOf(s.value)) 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.saveAfterAssociations()
s.err(s.model.callMethod("AfterCreate")) s.err(s.model.callMethod("AfterCreate"))

View File

@ -1003,6 +1003,7 @@ type Category struct {
type Post struct { type Post struct {
Id int64 Id int64
CategoryId int64
Title string Title string
Body string Body string
Comments []Comment Comments []Comment
@ -1011,6 +1012,7 @@ type Post struct {
type Comment struct { type Comment struct {
Id int64 Id int64
PostId int64
Content string Content string
Post Post Post Post
} }

View File

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