在Rails中为六种用户类型创建多个仪表板

时间:2016-02-03 14:57:56

标签: ruby-on-rails ruby user-interface design-patterns privileges

我正在开发一个涉及七种不同用户的项目。这些用户每个都有一个非常相似的仪表板。

对于每个用户,它们几乎完全相同,但略有不同:

  • 高层用户可以看到某些按钮
  • 表格布局包含额外的列
  • 与表条目相关的某些操作仅限于普通用户

我想让代码更干,但是如果部分会使布局复杂化而不是简化它,我该如何解决这个问题?在这种情况下?

我最初的想法是显示所有元素,但使用ExecuteAsync()语句隐藏/限制它们,使一个,但非常逻辑沉重的观点。

更广泛地说,如果UI根据查看它的用户的权限级别发生重大变化,那么接受的Rails模式是什么才能使事情井然有序?

1 个答案:

答案 0 :(得分:1)

如果DRY和OO是关注的话,我认为Pundit将是最适合你的。它实际上是超级面向对象和干净的方法。

基本上,您会将所有(通常很复杂的)授权逻辑移动到策略中,并且您的视图将如下所示(来自文档):

<% if policy(@post).update? %>
  <%= link_to "Edit post", edit_post_path(@post) %>
<% end %>