We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 6d4b91b + bc249a3 commit 97940f9Copy full SHA for 97940f9
1 file changed
.cursor/rules/ative-record.mdc
@@ -0,0 +1,21 @@
1
+## Título:
2
+ Previna N+1 queries pré-carregando associações no ActiveRecord
3
+
4
+## Descrição:
5
+ Sempre que iterar sobre uma coleção do ActiveRecord e acessar uma associação dentro
6
+ do loop, a associação deve ser pré-carregada com `includes` (ou
7
+ `preload`/`eager_load`). Caso contrário cada iteração dispara uma query extra
8
+ (N+1).
9
10
+ Sinalize qualquer `.each`/`.map`/`.select` sobre resultado de query onde o bloco
11
+ acessa um método de associação sem que a query de origem tenha `includes`.
12
13
+## Ruim:
14
+ Order.where(status: :paid).each do |order|
15
+ puts order.customer.email # 1 query por order
16
+ end
17
18
+## Bom:
19
+ Order.where(status: :paid).includes(:customer).each do |order|
20
+ puts order.customer.email # associação já carregada
21
0 commit comments