所以,我的app非常大,我正在努力减少代码。困扰我的一件事是每次我们需要检查用户是否可以做某事时,我们需要在应用程序代码中的多个位置使用相同的if语句。我看过一些据说可以处理权限和角色的宝石,但是它们似乎都不适合我需要的控制级别。
基本上,所有权限都基于4件事:
现在,前三个在会话期间永远不会改变(在大多数情况下无论如何都是如此),所以如果不管怎么说,只有一次将这些存储在宝石中,那将是更加光彩照人。
因此,我对安装完宝石后如何定义(简单)方法的设想看起来像这样:
can edit_content?(content) do
if (current_user.role >= User::MANAGER or content.user_id == current_user.id)
return true
else
return false
end
end
然后,在我看来,这样的事情:
<% if can :edit_content?(content) %>
...
<% end >
所以,这个gem会有点(auth系统必须使用current_user,current_account)特定于我的应用程序的设置,但我认为gem的想法是解决重复权限检查问题的最佳方法。
感谢所有帮助。谢谢! = d