Doutor, doutor; Por que meu escopo ActiveRecord está carregando ansiosamente?

Enquanto refatorava um Objeto de Consulta (explicado na excelente postagem do blog @codeclimate 7 Padrões para Refatorar Modelos Fat ActiveRecord ), me deparei com um problema estranho em que meu modelo com escopo estava carregando ansiosamente.

Por exemplo

irb(main):029:0> User.scoped
User Load (248.5ms) SELECT "users".* FROM "users"
.... SQLWTF!!1!

Depois de refletir um pouco sobre isso e ler a documentação , percebi que o problema era que o console em que estava testando deseja inspecionar a última instrução e, portanto, estava executando o escopo.

Você pode contornar isso colocando outra coisa no final da instrução para o console avaliar:

irb(main):030:0> u = User.scoped; nil
=> nil
irb
(main):031:0> u.count
(78.1ms) SELECT COUNT(*) FROM "users"
=> 909164

ESTRONDO!