Skip to content

Commit 97940f9

Browse files
authored
Merge pull request #348 from kodustech/task/new-rules
Active record rule
2 parents 6d4b91b + bc249a3 commit 97940f9

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

.cursor/rules/ative-record.mdc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
end

0 commit comments

Comments
 (0)