Skip to content

Commit

Permalink
Show error message if not using addressable value for auto migration
Browse files Browse the repository at this point in the history
  • Loading branch information
jinzhu committed Nov 25, 2014
1 parent 1aaac37 commit e9684db
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ func (s *DB) HasTable(value interface{}) bool {
func (s *DB) AutoMigrate(values ...interface{}) *DB {
db := s.clone()
for _, value := range values {
db = db.NewScope(value).autoMigrate().db
db = db.NewScope(value).NeedPtr().autoMigrate().db
}
return db
}
Expand Down
14 changes: 10 additions & 4 deletions scope.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,20 @@ func (scope *Scope) IndirectValue() reflect.Value {

// NewScope create scope for callbacks, including DB's search information
func (db *DB) NewScope(value interface{}) *Scope {
// reflectKind := reflect.ValueOf(value).Kind()
// if !((reflectKind == reflect.Invalid) || (reflectKind == reflect.Ptr)) {
// fmt.Printf("%v %v\n", fileWithLineNum(), "using unaddressable value")
// }
db.Value = value
return &Scope{db: db, Search: db.search, Value: value}
}

func (scope *Scope) NeedPtr() *Scope {
reflectKind := reflect.ValueOf(scope.Value).Kind()
if !((reflectKind == reflect.Invalid) || (reflectKind == reflect.Ptr)) {
err := errors.New(fmt.Sprintf("%v %v\n", fileWithLineNum(), "using unaddressable value"))
scope.Err(err)
fmt.Printf(err.Error())
}
return scope
}

// New create a new Scope without search information
func (scope *Scope) New(value interface{}) *Scope {
return &Scope{db: scope.db, Search: &search{}, Value: value}
Expand Down

0 comments on commit e9684db

Please sign in to comment.