我正在开发一个涉及七种不同用户的项目。这些用户每个都有一个非常相似的仪表板。
对于每个用户,它们几乎完全相同,但略有不同:
我想让代码更干,但是如果部分会使布局复杂化而不是简化它,我该如何解决这个问题?在这种情况下?
我最初的想法是显示所有元素,但使用ExecuteAsync()
语句隐藏/限制它们,使一个,但非常逻辑沉重的观点。
更广泛地说,如果UI根据查看它的用户的权限级别发生重大变化,那么接受的Rails模式是什么才能使事情井然有序?
答案 0 :(得分:1)
如果DRY和OO是关注的话,我认为Pundit将是最适合你的。它实际上是超级面向对象和干净的方法。
基本上,您会将所有(通常很复杂的)授权逻辑移动到策略中,并且您的视图将如下所示(来自文档):
<% if policy(@post).update? %>
<%= link_to "Edit post", edit_post_path(@post) %>
<% end %>