Вы прекрасно справляетесь с использованием кода, подобного process_user @appointment.user
, так как ActiveRecord старается минимизировать количество запросов к базе данных. Конечно, он не справляется со всеми ситуациями идеально, но ваш пример очень простой. Вероятно, немедленного запроса к базе данных не произойдет, и объект будет загружен только при обращении к его атрибутам.
Если вы замечаете проблемы с производительностью в запущенном крупномасштабном приложении и можете отслеживать проблемы вплоть до ActiveRecord с помощью профилирования, возможно, пришло время оптимизировать. Попытка предварительной оптимизации с самого начала противоречила бы философии Rails и приводила только к уродливому (и, возможно, даже более медленному) коду. Помните, что узкие места в реальной производительности часто бывают там, где вы их никогда не ожидаете.
РЕДАКТИРОВАТЬ: Как указала Winfield, оптимизация количества запросов обычно не означает самостоятельного управления внешними ключами или аналогичными внутренними объектами. Существует множество флагов и опций для методов доступа к БД, которые позволяют вам контролировать запросы к вашей базе данных.