1

随着我对 Rails 的了解越来越多,并打破了我从 ASP.Net 时代开始的设计思维,我今天早上正在考虑一个场景,但不知道是否可以这样做。

从业者通过服务获得许多治疗 - 反之亦然

在我的控制面板中,我有一个区域供从业者编辑他们的详细信息(姓名、联系信息等),也可以通过复选框选择他们的治疗方法。

我想从 Practitioners _form 中删除复选框。拥有自己的表格,我可以这样调用:

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

但是,从管理员的角度来看,我仍然需要能够在没有从业者对象的情况下管理治疗:

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

它也有身份验证障碍。

  • 有没有更简单的解决方案来提取我忽略的治疗方法?
  • 是否有可能在某些时候嵌套路由?
  • 今天早上我是不是喝了太多咖啡,因此目前处于精神错乱状态?
4

1 回答 1

3

一般来说,当考虑管理功能时,通常会向用户提供完全不同的界面,权限检查更多地基于“这会破坏某些东西”而不是“你应该被允许”,创建一个具有单独控制器的管理区域是有利的。例如:

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 之类的东西继承,这些东西在允许执行任何操作之前执行足够严格的身份验证检查。

在我见过的大多数应用程序中,面向用户的前端都有设计或风格元素,它们的布局通常被导航元素、广告或其他编辑内容包围。创建一个整洁的单独管理视图,每页显示更多信息,并允许对不向用户公开的维度进行排序或搜索,即使在管理中等规模的数据集时也非常有价值。

尽管制作这些额外的管理控制器及其相关表单似乎需要做很多工作,但如果您在设计中小心,您可以在这两个区域之间回收很多功能,尤其是页面部分。

于 2010-03-25T14:44:29.467 回答