Должен ли я просто возвращать что-то из модели в контроллер, а не пытаться вызвать метод напрямую
Действительно, это правильный подход. Я уверен, что у меня должны быть способы вызова некоторых методов из контроллера, но вы не должны их использовать. Модель должна заключать в себе всю логику, бизнес и аналогичную, проблемы домена, с которой вы работаете. Контроллеру нужно только отправлять и получать сообщения между моделями и возвращаться в представления.