В настоящее время я работаю над одним большим веб-приложением, и чтобы оно работало быстрее, я решил провести рефакторинг всех N + 1 запросов (чтобы уменьшить количество запросов к базе данных, http://rails -bestpractices.com / posts / 29-fix-N-1-запросов ).Поэтому я установил гем "bullet", который сейчас не работает с Rails 3.1.1 (вы можете использовать форк с https://github.com/flyerhzm/bullet).. При использовании гем декларативного_авторизации на каждой странице я получаю одинаковые предупреждения:
N+1 Query detected
Role => [:permissions]
Add to your finder: :include => [:permissions]
N+1 Query detected
Permission => [:permission_rules]
Add to your finder: :include => [:permission_rules]
CACHE (0.0ms) SELECT "roles".* FROM "roles"
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 1
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 2
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 3
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 4
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 6
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 7
CACHE (0.0ms) SELECT "permissions".* FROM "permissions" WHERE "permissions"."role_id" = 8
CACHE (0.0ms) SELECT "permission_rules".* FROM "permission_rules" INNER JOIN "permission_rules_permissions" ON "permission_rules"."id" = "permission_rules_permissions"."permission_rule_id" WHERE "permission_rules_permissions"."permission_id" = 30
CACHE (0.0ms) SELECT "permission_rules".* FROM "permission_rules" INNER JOIN "permission_rules_permissions" ON "permission_rules"."id" = "permission_rules_permissions"."permission_rule_id" WHERE "permission_rules_permissions"."permission_id" = 31
...
Не могли бы вы помочь мне с этим и сделать эти запросы быстрее?