Rails:对同一个model的不同访问权限的访问控制的设计

想和大家讨论一个rails的访问控制的设计问题。

假如我有一个user的model,实现对它的增、删、改、列表等功能。普通情况下,我们会实现类似于Scaffold生成的代码。默认进去一个user列表,然后每个user后面有edit, delete等之类的功能。同时列表上面有add的按钮。

假如我要加入权限控制,比如有的人只能看到列表。有的能看到列表和使用add功能,有的人能看到列表并且使用所有的功能。三种不同权限的人都可以看到列表,只不过对列表的操作不同。为了实现这样的访问控制,可以不同的设计。

通常,我会把所有的功能操作都放在一个controller中,这样就只有一套view。但是在显示add, edit, delete之类的按钮时进行判断,只有有相应的权限的人才可以看到这些按钮,进一步在相应的action里面也做相应的判断。 这样可以实现,但是总的来说感觉很凌乱。结构不够好,虽然可以把显示、隐藏操作按钮的逻辑放在helper里面还是感觉乱。

另外一种方法就是把不同的操作放在不同的controller里面,并且对不同的操作权限的人写不同view。这样就几乎完全独立开了。独立的controller,独立的view等等。 就没有那么繁杂的通过权限来判断是否显示按钮的逻辑了。不过就不是很DRY了,类似的列表要写好几次。

在这种情况,不知道大家是怎么设计的?谢谢指点。

你可能感兴趣的:(数据结构,Ruby,UP,Rails,ActiveRecord)