Boober: "контроллеру, который имеет модель"
Контроллер не может ничего иметь, кроме экшенов (методов). Модели никак вообще не привязаны к контроллерам.
Какие крупные проекты, какой high-load, какой memcached, какой Таненбаум? О чем вы вообще говорите? Вы хотя бы один простой блог сделали на PHP? Кто вас допустит-то до больших проектов?
PHP вам с головой хватит на ближайшие годы (если вообще не на всю карьеру). Да первый год вы просто будете разбираться в том, как вообще работает веб. Сделайте 10 блогов, 20 магазинов, пару SaaS-приложений, выучите самые продвинутые фреймворки, напишите свой, изучите архитектуры и дизайн паттерны... работы — непочатый край без всяких хай-лоадов. Чтобы пробежать марафон, сначала нужно научиться пробегать 1 километр.
Хватит готовиться, начните делать. Чтобы написать "<? echo 'Hello, World!'; ?>" не нужно изучать принципы работы процессора, не нужно изучать особенности работы C-компиляторов. Возьмите одну (ОДНУ!) книгу по последней версии PHP и сделайте хотя бы один сайт.
AlbertUfa: задвиньте эту стопку книг в далекий-далекий ящик :) До этих книг ещё нужно дорасти. Найдите самую новую книгу по PHP (желательно на английском языке, так как материал новее и качественнее) и вперед: делать-делать-делать! От одной книги "для начинающих" вы сейчас получите больше пользы, чем от этой стопки.
В сфере веб-разработки всё очень быстро развивается. Пока вы будете эти книги читать, сменится не одно поколение хипстеров :)
maxyc_webber: ну так контроллеры не одновременно же выполняются. Такая цепочка: запрос на урл → экшн в контроллере, который собирает данные из бд → рендер вьюхи. Если у тебя в экшене грузятся 20 разных типов данных (сущностей), то это, скорее, ошибка проектирования. Интерфейс просто превратиться в кашу.
Если города нужно будет грузить не для всех экшенов, то это ограничение можно сделать в before_action.
Да, всё зависит от конкретной задачи. Например, список городов можно выводить не в лэйауте, а подключать через паршиал на тех страницах, где он нужен. Но если таких страниц большинство, или вообще этот список должен быть на все страницах, то тогда нужно делать через before_action.
Единственное, что по-моему точно не правильно, так это грузить их через хэлперы. Хэлперы не должны делать запросов к БД, а они всего-лишь помогают обрабатывать данные для вьюх. А данные предоставляет контроллер, который берет их из БД.
maxyc_webber: да, плохая. Вообще, в контроллере публичными должны быть только экшены, а все остальные методы — либо приватные, либо protected. Ну и при таком вызове метода получается, что мы прямо в представлении делаем запрос к бд для загрузки данных. Не комильфо. Да и не к чему такие выкрутасы, всё делается проще.
Вы предлагаете человеку перевести весь проект на Angular.js + Rails API только потому, что он не может решить одну задачу? Или потому, что вы не знаете, как её решить? Ох уж эти фанатики...
Может кто и подскажет, как называется шрифт, но палитру придется вручную пипеткой подбирать :) Или написать автору сайта и спросить у него настройки терминала.
Контроллер не может ничего иметь, кроме экшенов (методов). Модели никак вообще не привязаны к контроллерам.