Хорошая практика - Перенаправление в моделях? - Рельсы 3.1 - PullRequest
5 голосов
/ 16 ноября 2011

У меня есть Search модель и контроллер. Бизнес-логика заключается в том, что если ключевое слово пользователя точно соответствует номеру модели продукта, перенаправьте его на страницу продукта.

В этой ситуации я должен просто выполнить перенаправление изнутри модели (где уже находится большая часть логики)?

Или я должен вернуть флаг или что-то в контроллер, чтобы я мог обработать перенаправление?

Ответы [ 2 ]

9 голосов
/ 16 ноября 2011

Объект модели не может отвечать и никогда не должен выполнять перенаправление.Логика приложения является обязанностью контроллера, поэтому контроллер должен запросить объект модели (в результате запроса), соответствует ли продукт номеру модели, и затем контроллер выполняет перенаправление.Объект модели не должен ничего знать о контроллере или представлениях.Это часть «Концепции Model-View-Controller» это реализовано Rails.

Rails реализует модель как шаблон ActiveRecord , так что все в порядкечто объект модели отвечает за базу данных, и это включает в себя поиск в базе данных.См. Много опций, которые у вас есть в Руководствах по Rails для запросов ActiveRecord , чтобы увидеть, что входит в сферу ответственности объектов модели.

4 голосов
/ 16 ноября 2011

Всегда помните шаблон MVC: MVC в Rails

Модель не должна заботиться о перенаправлении или каких-либо других вещах, связанных с контроллером.Пусть перенаправление будет в контроллере.

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