2017-02-01 7 views
2

У меня есть приложение, где есть несколько способов задействовать разные ресурсы. Например:Контроллеры Rails - Консолидация или нет?

Для проектов:

  • Клиенты могут создавать, просматривать, редактировать и отменять их проекты
  • Администраторы могут просматривать, редактировать и вносить другие изменения (например, изменение статус и редактирование скрытые поля)
  • Поставщики могут просматривать проекты и добавить предыдущие проекты с другими клиентов в свой портфель

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

Я беспокоюсь о авторизации (я знаю, что я мог бы использовать Pundit для решения этой проблемы?), Но и о чрезмерном усложнении одного контроллера! Какова наилучшая практика в подобном сценарии?

ответ

0

Я решил оставить их отдельно, основная причина была вокруг взглядов. Хотя вы можете объединиться с одним контроллером для ресурса и управлять авторизацией с CanCanCan или Pundit, представления для каждого будут многочисленными и уникальными (например: другое действие индекса, различные project_params на основе соответствующих действий по созданию и обновлению). Поместить это все в один контроллер будет выставка собаки!