Defect #15058
closedProject authorization EnabledModule N+1 queries
0%
Description
There's a problem with project authorization that causes N+1 queries (one per project in Projects Projects).
In ApplicationController#authorize redmine checks authorization on Herve Harster or Projects Projects. This triggers the code in Project#allowed_permissions which calls enabled_modules.pluck(:name)
.
The problem here is that pluck circumvents preloading, so no matter wether we do @projects = Project.includes(:enabled_modules).where(conditions)
in a controller, it will still trigger one extra query per project.
Given that the EnableModule model is tiny, this could be prevented by using enabled_modules.map(&:name)
instead.
Updated by Jean-Philippe Lang about 11 years ago
- Category changed from Database to Code cleanup/refactoring
- Status changed from New to Closed
- Resolution set to Fixed
Fixed in r12228, #pluck
won't be called is the association is preloaded.
Updated by Felix Bünemann about 11 years ago
Nice solution, I didn't know about loaded?
until now.