В приложении, с которым я работаю, около 100 моделей.Несколько вещей, которые помогли нам его разработать:
- Вы можете создать иерархическую структуру каталогов для моделей.Это очевидно, когда мы говорим о контроллерах, но для моделей это не так просто
- , вы можете разделить модели на логические части, поместив куски кода в модули
- , выполняя вышеупомянутые два пункта, иногда позволяет увидетьнесколько способов рефакторинга вашего кода.Некоторые модули могут стать общими для разных моделей.Некоторые вещи могут быть исключены из методов, которые будут динамически генерировать общие части моделей
- , иногда модули обрабатывают ненужную логику, и это затрудняет их понимание - если ваши методы содержат много
case
s или if
Для обработки различных типов объектов (например, администратор / обычный пользователь), вероятно, вам следует использовать полиморфизм - рефакторинг, рефакторинг, рефакторинг; -)
Мудрый рефакторинг занимает много времени,но если вы отбросите эту часть разработки, сопровождение проекта станет подавляющим.Проверьте книги о Ruby, RoR, рефакторинге, метапрограммировании.Вложение времени в обучение может также принести результаты.