Как вы сказали:
ModelName.where('true').class #=> ActiveRecord::Relation
ModelName.all.class #=> Array
Таким образом, вы можете выполнить столько отложенной загрузки, сколько не используете all
, first
или last
, которые запускают запрос.
Важно уловить эти различия, когда вы рассматриваете кеширование.
Тем не менее я не могу понять, какая ситуация может привести вас к чему-то вроде:
ModelName.all.where(foobar)
...Если вам не нужен весь набор ресурсов для одной цели, а также его загрузка из базы данных и подмножество его для других целей.В такой ситуации вам необходимо использовать методы фильтрации массивов ruby.
Sidenote:
ModelName.all
никогда не следует использовать, это анти-шаблон, так как вы не используете'контролировать, сколько предметов вы получите.И, надеюсь,:
ModelName.limit(20).class #=> ActiveRecord::Relation