Rails Design Вопрос: Как мне структурировать свои контроллеры для нескольких уровней привилегий? - PullRequest
0 голосов
/ 06 августа 2011

Я пишу сайт с несколькими уровнями привилегий. В моей системе в основном 3 вида пользователей. Это Администратор, Бизнес и Потребители (обычные пользователи). Скажем так, я строю рекламный сайт.

Итак, у меня есть модель "Кампания", которая имеет RESTful API, который поставляется с эстакадой рельсов. Предприятия могут создавать кампании, пользователи могут видеть только те кампании, к которым они хотят присоединиться, а администраторы могут делать все.

Теперь я знаю, как применить before_filter и тщательно проверять тип пользователей, которые могут получить доступ к определенному представлению.

Однако каждый уровень привилегий имеет свои уникальные представления.

Предприятия могут видеть идеи и аналитику своих кампаний. (давайте назовем это кампании / аналитика) Потребители могут видеть все кампании, в которых они участвовали. (Давайте назовем эти кампании / ваши) А у администраторов есть особые представления, где они могут отслеживать активность сайта. (давайте назовем эту кампанию / monitor_bususiness).

Прямо сейчас у моего CampaignController есть обычные RESTful просмотры + аналитика + ваши + monitor_usinessusiness. Конечно, у меня есть несколько моделей данных (не только кампаний), и это делает мои контроллеры RESTful для этих моделей данных действительно беспорядочными.

Что мне делать? Я серьезно рассматриваю возможность запуска ConsumerController, а затем BusinessController и добавления всех связанных представлений в эти контроллеры. Я не знаю, нарушает ли это принципы «RESTful», но я хочу знать, какие существуют лучшие шаблоны для решения моей проблемы.

Я открыт для всевозможных предложений.

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Почему бы вам не попробовать камень CanCan для управления ролями?Вы можете установить как любой другой драгоценный камень, используя bundler.

Он прост в настройке и не позволяет создавать тот же стандартный код, который вы обычно делаете, создавая дополнительные контроллеры или действия.

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

Если стандартной документации недостаточно, чтобы начать работу, почему бы вам не взятьвзгляд на Railscast 192 .Он показывает вам, как начать работу с CanCan, и это отличный источник, потому что Райан Бейтс является создателем скринкаста, а также создателем CanCan.Если видео движется слишком быстро, текстовая версия здесь .

0 голосов
/ 06 августа 2011

Вы не пробуете камень канкан для управления ролями http://rubygems.org/gems/cancan

или сделайте gem install cancan Надеюсь, это поможет.

...