我正在为一个组织编写一个rails应用程序。每个用户可能有一个或多个角色,并且只能根据这些角色访问特定的控制器操作。
例如,只有管理员才能创建、销毁和更新User
的某些字段。此外,还有一些Team
,每个Team
都有一个组长,并且只有组长才能更新有关该the的某些信息(例如,成员列表)。然而,Admins
是第一个指派团队领导的人。
我的场景的具体细节并不重要,我只希望我描述了有许多不同角色和权限的情况。
我的问题是:使用什么gem?我的第一个想法是CanCan,但最后一次提交是在一年前,没有提到与Rails 4的兼容性。有没有目前维护的替代方案?
发布于 2014-08-13 03:54:59
发布于 2017-03-15 04:25:04
有人向我建议我们现在使用的是petergate gem。易于使用,外观非常整洁,有很好的rails感觉。
可以很好地与devise配合使用。
以下是自述文件中的一些示例。
如果你正在使用devise,那你就走运了,否则你将不得不在你的项目中添加以下方法:
user_signed_in?
current_user
after_sign_in_path_for(current_user)
authenticate_user!
这会出现在你的User.rb中。添加更多角色与将其添加到数组中一样简单。
petergate(roles: [:admin, :editor], multiple: false)
实例方法
user.role => :editor
user.roles => [:editor, :user]
user.roles=(v) #sets roles
user.available_roles => [:admin, :editor]
user.has_roles?(:admin, :editors) # returns true if user is any of roles passed in as params.
控制器访问语法。
access all: [:show, :index], user: {except: [:destroy]}, company_admin: :all
https://stackoverflow.com/questions/25272911
复制相似问题