使用Rails 3和Devise授权角色

时间:2010-12-31 19:03:47

标签: ruby-on-rails authentication devise roles cancan

我已经使用了设计,因为我接手了Rails 3,这是第一个或第二个测试版,现在我还需要一些角色。在搜索网络后,看起来CanCan应该是最好的解决方案。但我不确定CanCan是否可以管理我的需求,比如我想要一个可以编辑/销毁主题的论坛版主,但是创建该主题的用户也应该能够编辑,那么我该怎么办?< / p>

1 个答案:

答案 0 :(得分:4)

根据您上面的简要说明,我想CanCan应该能够满足您的需求。

CanCan主要是用于集中授权规则的简化语法。它不提供开箱即用的角色。但是,CanCan wiki有一堆非常有用的链接,包括simplemore complex方法来实现角色。

我发现直接建模所有权比尝试拥有“所有者”角色更有帮助。所以(假设您使用上面更简单的角色方案)上面描述的用例将在您的能力定义中建模:

def initialize(user)
  ...
  can :manage, Topic if user.is? :moderator
  can :manage, Topic { |topic| if (topic.user_id == user.id) }
  ...
end

希望这有帮助。