Схема контроллера для применения многопользовательских рельсов - PullRequest
0 голосов
/ 28 ноября 2011

Хорошо, немного больше структурного вопроса здесь.

У меня есть приложение rails с тремя разными типами пользователей;те, кто просматривает контент, те, кто производит контент, и администраторы.будет контент и статистика, и такие, которые доступны в разных формах для каждого типа пользователей, например, зритель не может редактировать новостную запись, а продюсер или администратор могут и т. д. и т. д.

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

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

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

В настоящее время я работаю над проектом, в котором я использую разные контроллеры для разных типов пользователей (аналогично вашему подходу). У меня есть «admins / news_controller», «samples / news_controller» и «viewers / news_controller».Публичный контроллер (тот, что в controllers/viewers) имеет только действия show и index, а admins/news_controller наследует от 'public' добавление new, create, edit, update etc. и аутентификацию.Однако эта архитектура была продиктована требованиями и, возможно, не является лучшим решением для вас.

Другой подход заключается в том, чтобы иметь один контроллер новостей, одну изобретательскую модель пользователя с тремя ролями «администратор», «продюсер» и'viewer' и управляйте разрешениями для ресурса news с помощью драгоценного камня CanCan от Ryan Bates.Вы можете найти его здесь: https://github.com/ryanb/cancan. У Райана также есть Railcast на CanCan: http://railscasts.com/episodes/192-authorization-with-cancan.

Надеюсь, это поможет.

0 голосов
/ 28 ноября 2011

Полностью зависит.Если это просто тип новостей в зависимости от типа пользователя, имейте области (или лямбда-область) в модели новостей для получения правильных новостей.Это также может быть частью пользовательской модели, поэтому отношение has_many знает, какие типы элементов нужно извлечь.

Если интерфейсная функциональность отличается, то вы захотите отрендеритьдругой частичный, или разделить их полностью, или использовать что-то вроде ячеек, чтобы иметь специфичные для типа компоненты, или ...

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