Whilst refactoring out a Query Object (explained in the excellent @codeclimate blog post 7 Patterns to Refactor Fat ActiveRecord Models), I came across a weird issue where my scoped model was eagerly loading.
User Load (248.5ms) SELECT "users".* FROM "users"
After pondering this for a while, and reading the docs, I realised the problem was that the console I was testing in wants to inspect the last statement, and therefore it was executing the scope.
You can get around this by popping something else at the end of the statement for the console to evaluate:
irb(main):030:0> u = User.scoped; nil
(78.1ms) SELECT COUNT(*) FROM "users"