Ruby on rails 坎坎宝石简单问题 模型/能力.rb

Ruby on rails 坎坎宝石简单问题 模型/能力.rb,ruby-on-rails,ruby-on-rails-3,cancan,Ruby On Rails,Ruby On Rails 3,Cancan,在Railscasts中,有一些方法user.role?:admin&if user.role?(:author)。我不明白。我是否需要在模型中创建一个方法以使其工作 我将角色作为角色列存储在Users表中 是的,你需要自己写这个。然而,坎坎项目有一个巨大的挑战 维基的第一行写道: “CanCan与您的 在用户模型中实现角色,但是 如何建立基于角色的基本模型 授权?” 请注意,我几乎完全不同意该页面上使用角色掩码的示例,但该页面仍然很好,应该会给您一些想法 还有我个人比较喜欢的。这取决于您希望将

在Railscasts中,有一些方法user.role?:admin&if user.role?(:author)。我不明白。我是否需要在模型中创建一个方法以使其工作


我将角色作为角色列存储在Users表中

是的,你需要自己写这个。然而,坎坎项目有一个巨大的挑战

维基的第一行写道:

“CanCan与您的 在用户模型中实现角色,但是 如何建立基于角色的基本模型 授权?”

请注意,我几乎完全不同意该页面上使用
角色掩码的示例,但该页面仍然很好,应该会给您一些想法


还有我个人比较喜欢的。这取决于您希望将角色信息存储在何处。

如果您正在寻找即插即用的gem,请查看声明性授权。 Raynb说,他开发Cancan是因为DA对这里的一些项目过于苛刻:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user

    if user.role? :admin
      can :manage, :all
    else
      can :read, :all
      can :create, Comment
      can :update, Comment do |comment|
        comment.try(:user) == user || user.role?(:moderator)
      end
      if user.role?(:author)
        can :create, Article
        can :update, Article do |article|
          article.try(:user) == user
        end
      end
    end
  end
end