Результаты запроса связи, настроенной с помощью Active Record, кэшируются. Следовательно, запрос к БД генерируется только при первом запросе экземпляра модели к атрибуту связи, и многократные обращения к нему не влияют на производительность. При...
More
Результаты запроса связи, настроенной с помощью Active Record, кэшируются. Следовательно, запрос к БД генерируется только при первом запросе экземпляра модели к атрибуту связи, и многократные обращения к нему не влияют на производительность. При необходимости можно обновить кэшированные данные, передав в запрос true. (http://rusrails.ru/active-record-associations#upravlenie-keshirovaniem) Можно кешировать количество экземпляров модели, принадлежащей другой модели, добавив в вызов belongs_to принадлежащей модели опцию counter_cache: true, и добавив столбец счетчика в содержащую модель. Тогда запросы вида owner.properties.size не будут обращаться с запросом к БД. (http://rusrails.ru/active-record-associations#counter_cache) При загрузке из БД массива экземпляров модели автоматически одним запросом загружаются и непосредственные связи этих экземпляров. Для подобной нетерпеливой загрузки связей более глубокой вложенности можно вставить в запрос вызов include(<список вложенных моделей>). Та
Less