Skip to content

Commit e85b73e

Browse files
committed
Fix nested Scopes, close go-gorm#4196
1 parent a3d9bbf commit e85b73e

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

callbacks.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ func (p *processor) Execute(db *DB) {
109109
}
110110

111111
// call scopes
112-
scopes := stmt.scopes
113-
stmt.scopes = nil
114-
for _, scope := range scopes {
115-
db = scope(db)
112+
for len(stmt.scopes) > 0 {
113+
scopes := stmt.scopes
114+
stmt.scopes = nil
115+
for _, scope := range scopes {
116+
db = scope(db)
117+
}
116118
}
117119

118120
for _, f := range p.fns {

migrator.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import (
88
// Migrator returns migrator
99
func (db *DB) Migrator() Migrator {
1010
// apply scopes to migrator
11-
scopes := db.Statement.scopes
12-
db.Statement.scopes = nil
13-
for _, scope := range scopes {
14-
db = scope(db)
11+
for len(db.Statement.scopes) > 0 {
12+
scopes := db.Statement.scopes
13+
db.Statement.scopes = nil
14+
for _, scope := range scopes {
15+
db = scope(db)
16+
}
1517
}
1618

1719
return db.Dialector.Migrator(db.Session(&Session{}))

0 commit comments

Comments
 (0)