Рельсы Много ко Многим Отношения со случайными Вложенными Маршрутами - PullRequest
1 голос
/ 25 марта 2010

Поскольку я больше узнаю о рельсах и ломаю мысли о дизайне из дней ASP.Net, я рассматривал сценарий сегодня утром, но не знал, возможно ли это сделать.

У практикующих есть много Обращений через услуги - и наоборот

В моей панели управления у меня есть область, где практикующие могут редактировать свои данные (имена, контактные данные и т. Д.), А также могут выбирать способы лечения с помощью флажков.

Я хотел бы снять флажки с практиков _form. Имея свою собственную форму, которую я мог бы вызвать так:

<%= link_to "Edit Treatments", edit_practitioner_treatments(@practitioner) %>

Однако, с точки зрения администратора, мне все равно нужно было бы иметь возможность управлять процедурами без видимого объекта-практикующего:

<%= link_to "Edit Treatments", edit_treatments(@treatment) %>

, который также имеет барьеры аутентификации.

  • Есть ли более простое решение для извлечения лечения, которое я пропустил?
  • Возможно ли иметь вложенные маршруты только иногда?
  • У меня было слишком много кофе этим утром, и поэтому я сейчас нахожусь в состоянии безумия?

1 Ответ

3 голосов
/ 25 марта 2010

Обычно при рассмотрении функций администратора, которые часто предоставляют пользователю совершенно другой интерфейс с проверкой прав доступа, основанной больше на том, «что-то сломает», чем «если вам позволят», целесообразно создать область администратора с отдельными контроллерами , Например:

map.namespace :admin do |admin|
  # Admin::PracticionersController
  map.resources :practicioners

  # Admin::TreatmentsController
  map.resources :treatments
end

map.resources :practicioners do |practicioner|
  practicioner.resources :treatments
end

map.resources :treatments do |treatment|
  treatment.resources :practicioners
end

Все контроллеры Admin :: * могут наследовать от чего-то, например Admin :: BaseController, который выполняет достаточно строгую проверку подлинности, прежде чем разрешить выполнение каких-либо действий.

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

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

...