Создание областей администратора в Rails - общие вопросы - PullRequest
5 голосов
/ 08 апреля 2010

Каков типичный формат / структура для создания административной области в приложении Rails?

В частности, я в тупике в связи с этими темами:

  • Как вы справляетесьс ситуациями, когда ресурсы модели доступны как для общественности, так и для администратора?т. е. модель пользователя, в которой любой может создавать пользователей, входить в систему и т. д., но только администратор может просматривать пользователей, удалять / обновлять их и т. д.
  • Какое соглашение следует использовать для маршрутизации?
  • КакКонтроллеры одной структуры?
  • Считаются ли дублирующие контроллеры нормальными?то есть версия для администратора и не для администратора?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 08 апреля 2010

Вы можете иметь 2 контроллера, один для публичной части, другой для администратора, и использовать пространство имен администратора:

map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin|
    admin.resources :users  
end

Это будет соответствовать / settings / users , а к контроллеру должен быть добавлен префикс Admin:: подобно Admin::UsersController, также файл контроллера должен быть помещен в папку admin в папке app / controllers dir.

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

Существует серия Railscasts, в которой показан подход, позволяющий избежать создания отдельной области администратора с помощью условных выражений в представлениях и контроллерах: Куда идет администрирование .

Это может не подходить для вашего случая использования, но стоит посмотреть.

0 голосов
/ 08 апреля 2010

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

В экосистеме Rails есть несколько других плагинов, которые предлагают аналогичную функциональность.

...