Хороший совет: если вы не позволяете модели говорить прямо друг с другом, вам всегда (или когда это возможно) приходится использовать контроллер для такого рода связи.
Я также слышал мнение о том, что неуместно иметь логику в ваших моделях ... Я не знаю, так ли это, но это правило, которое я нарушал много раз (если кто-то знает больше о тему пожалуйста поправьте меня).
И, конечно, всегда имейте в виду, что модель должна быть многоразовой, поэтому я пытаюсь дать общее решение некоторых проблем, а не конкретное приложение ... с другой стороны, контроллер, похоже, является одноразовым компонентом, так что это то, где вы должны делать некрасивые вещи, которые никогда не будут использованы в других проектах ...
Надеюсь, это немного поможет