From 09c5b86a8e7fbdd2ea714c1e8d24b29b374c1c93 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Tue, 23 Jun 2026 09:25:38 +0200 Subject: [PATCH] fix: eager load organisers on workshops and events to eliminate N+1 queries Bullet detected N+1 queries on Workshop#organisers and Event#organisers when rendering the events list. Also removed unused eager loading on Meeting (venue, permissions) and enabled Bullet#raise in development. --- app/controllers/events_controller.rb | 12 ++++++------ config/environments/development.rb | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 5880f08ca..776173df8 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -73,13 +73,13 @@ def set_event def fetch_upcoming_events events = [ - Workshop.includes(:chapter, :sponsors, :host, :permissions) + Workshop.includes(:chapter, :sponsors, :host, :permissions, :organisers) .upcoming .joins(:chapter) .merge(Chapter.active) ] - events << Meeting.upcoming.includes(:venue, :permissions).all - events << Event.upcoming.includes(:venue, :sponsors, :sponsorships, :permissions).all + events << Meeting.upcoming.all + events << Event.upcoming.includes(:venue, :sponsors, :sponsorships, :permissions, :organisers).all sorted = events.compact.flatten.sort_by(&:date_and_time) return [{}, nil] if sorted.empty? @@ -95,13 +95,13 @@ def fetch_upcoming_events def fetch_past_events events = [ - Workshop.includes(:chapter, :sponsors, :host, :permissions) + Workshop.includes(:chapter, :sponsors, :host, :permissions, :organisers) .past .joins(:chapter) .merge(Chapter.active) ] - events << Meeting.past.includes(:venue, :permissions).all - events << Event.past.includes(:venue, :sponsors, :sponsorships, :permissions).all + events << Meeting.past.all + events << Event.past.includes(:venue, :sponsors, :sponsorships, :permissions, :organisers).all sorted = events.compact.flatten.sort_by(&:date_and_time).reverse return [{}, nil] if sorted.empty? diff --git a/config/environments/development.rb b/config/environments/development.rb index 5da35e3b7..583859e24 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -89,6 +89,7 @@ Bullet.enable = true Bullet.bullet_logger = true Bullet.console = true + Bullet.raise = true Bullet.rails_logger = true end end