Quando falamos em manter um projeto Ruby on Rails saudável no longo prazo, dois pilares são fundamentais: código limpo e arquitetura escalável. Entre os recursos mais poderosos e frequentemente mal utilizados estão os modelos Active Record e os scopes — que, quando bem aplicados, tornam o código mais legível, reutilizável e de fácil manutenção.
1. Evite lógica complexa dentro de controllers
Uma das boas práticas mais importantes é manter os controllers enxutos. Toda a lógica de negócio deve estar nos modelos ou serviços. O Active Record permite encapsular regras diretamente nos modelos usando métodos ou scopes.
2. Utilize Scopes para consultas reutilizáveis
Scopes são ideais para encapsular consultas frequentes ou reutilizáveis. Por exemplo:
scope :ativos, -> { where(ativo: true) }
scope :ordenados_por_criacao, -> { order(created_at: :desc) }
Isso evita repetição e mantém as queries organizadas e legíveis. Além disso, você pode compor scopes, como:
User.ativos.ordenados_por_criacao
3. Evite queries complexas direto nas views ou controllers
Sempre que possível, extraia filtros e condições para scopes nomeados ou métodos de instância no modelo. Isso facilita a leitura e manutenção, além de reduzir o risco de duplicação de código.
4. Cuide da performance com includes e select
Um erro comum é gerar N+1 queries por esquecer de carregar associações:
# Ruim
Post.all.each { |post| puts post.author.name }
# Melhor
Post.includes(:author).each { |post| puts post.author.name }
Também vale a pena usar select
quando não for necessário trazer todos os campos da tabela:
User.select(:id, :nome).ativos
5. Crie scopes com regras de negócio nomeadas
Um código limpo também comunica a intenção. Prefira nomes de scopes que indicam claramente seu propósito, como:
scope :com_pedidos_ativos, -> { joins(:pedidos).where(pedidos: { ativo: true }) }
Isso evita a necessidade de explicar a lógica em comentários ou documentações paralelas.
Conclusão
O uso consciente e bem estruturado do Active Record e de scopes faz toda a diferença na qualidade de um projeto Rails. Ao aplicar essas boas práticas, você constrói um código mais coeso, de fácil entendimento para outros desenvolvedores e mais preparado para escalar.
Na Agência F12, seguimos esses e outros princípios para entregar soluções robustas e sustentáveis aos nossos clientes.