← Retour aux Labs
Rails Performance Challenge
Cette page Rails déclenche un problème de performance. Lequel ?
Analysez ce code Ruby on Rails et choisissez la meilleure correction.
# app/controllers/admin/courses_controller.rb
def index
@courses = Course.order(created_at: :desc).limit(50)
end
# app/views/admin/courses/index.html.erb
<% @courses.each do |course| %>
<tr>
<td><%= course.reference %></td>
<td><%= course.customer.full_name %></td>
<td><%= course.created_at.strftime('%d/%m/%Y') %></td>
</tr>
<% end %>Quelle est la meilleure réponse ?
Solution senior
Précharger les associations pour éviter les requêtes inutiles.
# Correction
def index
@courses = Course
.includes(:customer)
.order(created_at: :desc)
.limit(50)
end Sur une page avec 50 courses, sans préchargement, Rails peut générer 1 requête pour les courses + 50 requêtes pour les clients. Avec includes(:customer), Rails réduit fortement le nombre de requêtes.
Besoin d’aide sur Rails ?
Votre application Rails devient lente ou difficile à maintenir ?
J’accompagne les équipes sur l’audit, la performance PostgreSQL, la refactorisation, les APIs et l’architecture Ruby on Rails.