Допустим, у меня есть 4 модели, которые связаны между собой следующим образом:
- В расписании есть внешний ключ для проекта
- Расписание имеет внешний ключ для пользователя
- Проект имеет внешний ключ для Клиента
В моем представлении Schedule # index я хочу наиболее оптимизированный SQL, чтобы я мог отображать ссылки на связанный с Schedule проект, клиент и пользователь. Поэтому я не должен тянуть все столбцы для проекта, клиента и пользователя; только их идентификаторы и имя.
Если бы я написал SQL вручную, он мог бы выглядеть так:
select
s.id,
s.schedule_name,
s.schedule_type,
s.project_id,
p.name project_name,
p.client_id client_id,
c.name client_name,
s.user_id,
u.login user_login,
s.created_at,
s.updated_at,
s.data_count
from
Users u inner join
Clients c inner join
Schedules s inner join
Projects p
on p.id = s.project_id
on c.id = p.client_id
on u.id = s.user_id
order by
s.created_at desc
Мой вопрос: Как будет выглядеть код ActiveRecord, чтобы Rails 3 генерировал этот SQL? Например, что-то вроде:
@schedules = Schedule. # ?
У меня уже есть настройки связей в моделях (то есть has_many / own_to).