forked from mirror/gorm
Fix to call Scopes with using Migrator
This commit is contained in:
parent
a9fe025ef5
commit
8c92d9694a
12
migrator.go
12
migrator.go
|
@ -7,16 +7,18 @@ import (
|
||||||
|
|
||||||
// Migrator returns migrator
|
// Migrator returns migrator
|
||||||
func (db *DB) Migrator() Migrator {
|
func (db *DB) Migrator() Migrator {
|
||||||
|
tx := db.getInstance()
|
||||||
|
|
||||||
// apply scopes to migrator
|
// apply scopes to migrator
|
||||||
for len(db.Statement.scopes) > 0 {
|
for len(tx.Statement.scopes) > 0 {
|
||||||
scopes := db.Statement.scopes
|
scopes := tx.Statement.scopes
|
||||||
db.Statement.scopes = nil
|
tx.Statement.scopes = nil
|
||||||
for _, scope := range scopes {
|
for _, scope := range scopes {
|
||||||
db = scope(db)
|
tx = scope(tx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return db.Dialector.Migrator(db.Session(&Session{}))
|
return tx.Dialector.Migrator(tx.Session(&Session{}))
|
||||||
}
|
}
|
||||||
|
|
||||||
// AutoMigrate run auto migration for given models
|
// AutoMigrate run auto migration for given models
|
||||||
|
|
|
@ -45,4 +45,13 @@ func TestScopes(t *testing.T) {
|
||||||
if len(users3) != 2 {
|
if len(users3) != 2 {
|
||||||
t.Errorf("Should found two users's name in 1, 3, but got %v", len(users3))
|
t.Errorf("Should found two users's name in 1, 3, but got %v", len(users3))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
db := DB.Scopes(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Table("custom_table")
|
||||||
|
}).Session(&gorm.Session{})
|
||||||
|
|
||||||
|
db.AutoMigrate(&User{})
|
||||||
|
if db.Find(&User{}).Statement.Table != "custom_table" {
|
||||||
|
t.Errorf("failed to call Scopes")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue