什么是Rails方式 - 共享控制器/视图或单独?

时间:2016-04-06 09:54:33

标签: ruby-on-rails

我刚刚收到的应用中有2种类型的用户需要增强。

Admins谁可以做所有事情

RoomAdmins谁只能管理与他们的房间有关的事情 - 比如添加 父母,属于房间。

例如,RoomAdmins注册时,可以CRUD Parents用于他们的房间(已经有RoomAdmin/ParentsController)。

现在我需要Admins能够管理Parents。那么我应该创建一个Admin/ParentsController并创建一组特定于这些用例的视图吗?

或者是将“RoomAdmin/ParentsController移动到app/controllers并让RoomAdminsAdmins共享该控制器的'Rails'惯例?这将使该控制器变得更加复杂(以及视图)。

请记住,对于每种管理类型,视图会略有不同,并且每个操作中的逻辑会有很小的差异,具体取决于我们在每个操作之后路由到的位置,具体取决于它是Admin还是RoomAdmin。父节点。

那么哪个选项是Rails惯例?

A - 单独的控制器,单独的视图

B - 一个控制器,一组视图,更复杂的逻辑来处理差异?

修改

我忘了这里增加了复杂性,这是控制器继承链,因为两种类型的用户都有不同的主要布局和登录过程:

所有处理房间的控制器目前都从RoomAdminsController继承。

所有处理管理功能的控制器都继承自AdminController

所以RoomAdmin/ParentsController目前继承自RoomAdminsController

如果我移动它,那么它继承了它?哎!

1 个答案:

答案 0 :(得分:0)

根据评论,我认为正确的解决方案是一个控制器:

  

我认为解决方案是将ParentsController移动到app / controller&   根据要求创建不同的操作。避免重复代码   根据DRY校长。

来自@Chakreshwar

  

我认为没有这方面的惯例。我会有一个管理员   区域并使用cancancan来处理逻辑,指定不同的角色   对于用户并授予他们访问不同操作的权限。

来自@ j-dexx