В этом файле https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/query_methods.rb, большинство методов имеет следующий код,
relation = clone
и возврат relation. В результате такой запрос,
relation
SomeModel.where(...).select(...).order(...).limit(...)
клонирует 4 новых объекта.
Почему они просто не используют self и возвращают self?
self