Как предотвратить бизнес-логику в контроллерах Rails - PullRequest
2 голосов
/ 09 февраля 2012

Если я правильно понимаю MVC Контроллеры должны содержать только логику, которая склеивает модель вместе с представлением.Он содержит логику приложения, такую ​​как аутентификация, сеанс и другие вещи для приложения.Модель, с другой стороны, должна выполнять бизнес-логику приложения, и представления должны обновляться в ответ на изменения в модели.Однако как это сделать в Rails?

Мои контроллеры содержат логику, которая находит объекты модели и т. Д., А затем обновляет представления в ответ.

Я неправильно понял логику приложения и бизнес-логику.Я бы оценил, если бы кто-нибудь мог помочь мне понять MVC.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Rails - хорошая реализация MVC и допускает хорошие абстракции. Поиск объектов модели не является бизнес-логикой.

Чтобы убедиться, что вы правильно поняли, держите ваши контроллеры короткими; перенести любую существенную логику в модели, создав новые методы; использовать встроенные в рельсы помощники и методы; по возможности следуйте RESTful-архитектуре (не идеально, но помогает) и попросите кого-нибудь еще обсудить ваш код с вами.

2 голосов
/ 09 февраля 2012

Отчасти проблема заключается в том, что архитектура Rails делает ее похожей на модель = ActiveRecord, и это не обязательно так. Класс Model или модуль могут быть чем угодно.

Когда модели -are- ActiveRecord (что имеет смысл в большинстве случаев), вы можете добавлять методы к тем классам, которые могут вызываться контроллерами и которые содержат бизнес-логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...