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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu