У меня есть три таблицы: User, Task и UserTask (в которых User и Task являются внешними ключами, других столбцов нет). Запись в таблице UserTask может существовать или не существовать для конкретной комбинации Пользователь/Задача (записи UserTask создаются по мере необходимости для обеспечения масштабируемости).
На мой взгляд, я хотел бы показать все задачи для текущего пользователя, вошедшего в систему. Для каждой задачи я хочу отображать текст «да», если соответствующая запись существует в таблице UserTask; в противном случае я хочу отобразить «нет». Но я немного не уверен, какие объекты я должен передать в представление из контроллера и как я должен взаимодействовать с объектами (т.е. что мне разрешено делать) после того, как они будут переданы в представление.
Должен ли я передавать пользователя, задачи и задачи пользователя как отдельные переменные из контроллера в представление? Таким образом, я могу показать все задачи, просто просматривая переменную Tasks, и для каждой задачи я могу использовать where
(запрос ActiveRecord) в представлении, чтобы определить, существует ли UserTask для каждой задачи. Дело в том, можно ли выполнять запросы where
и find
к объекту, переданному в представление? Я всегда предполагал, что вы оставляете это контроллеру и делаете в представлении только простые вещи, например, итерацию по объектам, переданным в представление (поправьте меня, если это неправильно).
Или мне следует создать хэш в контроллере, где каждый ключ является задачей, а каждое значение — пользовательской задачей, а затем передать этот хэш в представление? Таким образом, я могу показать все задачи в представлении, просто перебирая все ключи, и для каждого ключа задачи я могу отображать «да» или «нет», проверяя, является ли значение нулевым или нет.
Или есть другой способ (например, объединение таблиц или что-то в этом роде... не знаю, как это будет работать)?