Когда требуется отложенная загрузка?
Вы хотите получить данные любой модели с условиями (условиями соединения) других связанных моделей, но не хотите загружать эти связанные данные таблицычто может занять время.
Таким образом, ленивая загрузка сэкономит время, поскольку вы можете получать данные путем фильтрации, но не загружаете связанные данные из базы данных.
Когда необходима активная загрузка?
Вы хотите условия или никаких условий, но вы также вызываете их связанные записи, поэтому полезно загружать связанные записи с нетерпением.Поэтому вызов связанных записей для объекта не запускает запрос к базе данных каждый раз для каждого объекта.
Предположим,
@ users - это ActiveRecord::Relation
объект коллекции (has_one: id_card), имеющий размер 80 & Iвызывал каждый цикл для таблицы, как показано ниже:
@users.each do |user|
user.id_card.name
end
Он запустит запрос 80 раз для таблицы модели IdCard.Так вот, это эффективно.
Обновление
includes
не всегда создают два отдельных запроса, прочитайте здесь .