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

Creating multiple dashboards for a half dozen user types in Rails

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

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

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

我最初的想法是显示所有元素,但是 hide/restrict 它们带有 if 语句,形成了 一个 ,但是非常逻辑重的视图.

更广泛地说,如果 UI 根据查看它的用户的权限级别发生显着变化,那么可接受的 Rails 保持事物组织的模式是什么?

如果您担心 DRY 和 OO,我认为 Pundit 将是您的最佳选择:)。这真的是超级面向对象和干净的方法。

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

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