Контроллеры в приложении Rails - PullRequest
1 голос
/ 06 февраля 2012

Является ли целью контроллера предоставление действий, которые манипулируют моделью и обновляют представление? Есть ли в одной модели ровно один контроллер, который предоставляет методы, которые управляют им? Или один контроллер имеет методы для нескольких моделей?

Все статьи, которые я нахожу, - это то, что контроллером называется «здесь вы помещаете бизнес-логику», а не когда нужно разделить его на несколько контроллеров, что он делает или к чему он относится.

Может кто-нибудь объяснить, пожалуйста?

Ответы [ 2 ]

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

Контроллер предоставляет действия, которые связывают представление и модель, и он не должен содержать бизнес-логику , он должен содержать логика представления / логика приложения .Вообще говоря, MVC является шаблоном архитектуры организации view , и существуют различные шаблоны / подходы для организации уровня бизнес-логики / уровня доступа к данным / уровня услуг и т. Д. (Все это скрытая модель поведения в терминологии MVC).

Шаблон MVC не говорит вам, как организовать вашу модель, он только утверждает, что модель должна содержать бизнес-логику.Из-за этого вам не нужно строить отношения один-к-одному между моделью и контроллером, это действительно зависит от вашей системы и логики вашего приложения.

ОБНОВЛЕНИЕ

Модель будет содержать логику, которая всегда верна для области знаний (бизнес-логика), а контроллер будет содержать логику, которая может быть специфичной для части приложения (логика приложения, логика представления).Контроллер обычно анализирует пользовательский ввод, вызывает методы Model, подготавливает и передает результат в View.Контроллер должен быть тонким.Со всей бизнес-логикой в ​​модели ее можно легко использовать в будущем.

0 голосов
/ 06 февраля 2012

Является ли целью контроллера предоставление действий, которые манипулируют моделью и обновляют представление?

Да

Имеется ли в одной модели ровно один контроллер, обеспечивающий методы, которые управляют им?

Не обязательно

Или у одного контроллера есть методы для нескольких моделей?

Они могут, но опять-таки, не обязательно

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

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

Короче говоря, это полностью зависит от контекста и того, что вы пытаетесь сделать.

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