定义对设计用户模型的基于角色的访问

问题描述:

任何人都可以指向我的文档吗?定义对设计用户模型的基于角色的访问

我在Rails3应用程序中使用Devise + CanCan,并设置了Ability.rb。

我想根据用户的角色限制对编辑/删除用户路径的访问。通常Ability.rb会是这样的:

def initialize(user)   
    if user.role? :moderator 
     can :manage, User 
    end 
end 

但在意见我使用了编辑设计注册路径/删除:

<% if can? :update, @user %> 
    <%= link_to 'Edit', edit_user_registration_path(@user) %> | 
<% end %> 

“可以:管理用户”不似乎适用于这些路径,并且无论角色如何,它们都保持隐藏状态。

如果我使用“can:manage,:all”,则主持人用户可以访问这些路径。

因此,“用户”显然不是正确的管理模式。我尝试过“设计”和“注册”,无济于事。

我应该使用什么值 - “can:manage,????” - 我在哪里可以找到解释原因的文档?

谢谢你的指点!

您面临的问题,我在上一个项目中遇到过。
此链接将为您提供所有答案。

Rails-authentication-with-devise-and-cancan-restful-resources-for-administrators

希望它能帮助。

+0

@jatin感谢您获取有用信息的链接。现在只有当用户的角色具有编辑功能时才会显示链接。但是,这只发生在全球范围内。即。版主可以编辑/销毁所有用户,用户不能编辑/销毁任何用户。登录的用户应该能够使用上面使用的条件语句编辑/更新自己,对吗? – 2011-04-26 03:11:52

+0

@安迪:是的,没错。但是在为用户记下能力时要小心,他不能编辑/更新他/她的角色,但可以改变其他事情。 – 2011-04-26 07:31:25

+0

@贾丁感谢您的提示。在这种情况下应该不是问题,因为角色是通过单独的模型处理的。我还没有选择你的答案,尽管它已经到了一半,因为我仍然试图找到一个解决方案来显示编辑链接,只有登录用户在索引视图中。应该是比较直接的,只需要找到时间考虑它,并在这里包括完整的答案。 – 2011-04-26 12:35:00