Ответ 1
ActiveRecord:Relation
запрашивает только db при обращении к своим элементам. Таким образом, ваша последовательность не будет вообще вызывать db, если вы не напишете что-то вроде u.first
или tens.first
.
Это немного отличается в консоли Rails, так как каждый результат отчета печатается на консоль, поэтому каждый раз выполняется запрос. Вы можете пропустить печать, добавив ; 1
после каждого утверждения.
В стороне, если вы все еще хотите отфильтровать результаты с помощью первого запроса:
u = User.where(name: "bob", age: [10, 20]) # no query at this point
u.class # ActiveRecord::Relation
u.first # query to db
u.class # Array
tens = u.select{|x| x.age == 10} # no query to db