我刚刚收到的应用中有2种类型的用户需要增强。
Admins
,谁可以做所有事情
RoomAdmins
,谁只能管理与他们的房间有关的事情 - 比如添加
父母,属于房间。
例如,RoomAdmins
注册时,可以CRUD Parents
用于他们的房间(已经有RoomAdmin/ParentsController
)。
现在我需要Admins
能够管理Parents
。那么我应该创建一个Admin/ParentsController
并创建一组特定于这些用例的视图吗?
或者是将“RoomAdmin/ParentsController
移动到app/controllers
并让RoomAdmins
和Admins
共享该控制器的'Rails'惯例?这将使该控制器变得更加复杂(以及视图)。
请记住,对于每种管理类型,视图会略有不同,并且每个操作中的逻辑会有很小的差异,具体取决于我们在每个操作之后路由到的位置,具体取决于它是Admin还是RoomAdmin。父节点。
那么哪个选项是Rails惯例?
A - 单独的控制器,单独的视图
B - 一个控制器,一组视图,更复杂的逻辑来处理差异?
修改
我忘了这里增加了复杂性,这是控制器继承链,因为两种类型的用户都有不同的主要布局和登录过程:
所有处理房间的控制器目前都从RoomAdminsController
继承。
所有处理管理功能的控制器都继承自AdminController
。
所以RoomAdmin/ParentsController
目前继承自RoomAdminsController
。
如果我移动它,那么它继承了它?哎!
答案 0 :(得分:0)
根据评论,我认为正确的解决方案是一个控制器:
我认为解决方案是将ParentsController移动到app / controller& 根据要求创建不同的操作。避免重复代码 根据DRY校长。
来自@Chakreshwar
我认为没有这方面的惯例。我会有一个管理员 区域并使用cancancan来处理逻辑,指定不同的角色 对于用户并授予他们访问不同操作的权限。
来自@ j-dexx