Rennan Oliveira
Aug 25, 2017 · 1 min read

Boa postagem, excelente exemplo com o default_scopes e sobre o SQL puro, tendo o cuidado de explicar que as vezes o tradeoff pode valer apena.

Só tenho uma ressalva sobre a primeira parte, em ‘Nunca utilize o Ruby para fazer consultas.’ A regra vale para quase todos os casos, mas acho importante falar de possíveis edge cases.

O benchmark feito foi localmente, considerando que o acesso a banco tem zero de delay de rede. Em algumas situações específicas onde você acaba tendo que fazer mais de uma query para retornar uma subquery da primeira e você está trabalhando com poucos objetos (ex: user has_many addresses, com um limite de 5 addresses por usuário). É menos custoso fazer @user.addresses e depois aproveitar a query com @user.addresses.detect {|address| address.active? } do que fazer @user.addresses e @user.addresses.active

)

    Rennan Oliveira

    Written by