【问题标题】:cancan gem simple question康康宝石简单的问题
【发布时间】:2011-03-02 00:41:00
【问题描述】:

models/ability.rb

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

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

我将角色存储在用户表中作为角色列。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cancan


    【解决方案1】:

    是的,您需要自己编写。但是,CanCan 项目有一个wiki page describing how to do this

    wiki 的第一行说:

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

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

    还有Separate Role Model example,我个人比较喜欢。这取决于您要将角色信息存储在何处。

    【讨论】:

      【解决方案2】:

      如果您正在寻找即插即用的 gem,请查看声明式授权。 Raynb 说他开发 Cancan 是因为 DA 对于某些项目来说太过分了:http://railscasts.com/episodes/192-authorization-with-cancan?autoplay=true

      【讨论】:

        猜你喜欢
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2011-05-24
        • 1970-01-01
        • 2011-05-10
        • 2012-06-06
        • 1970-01-01
        相关资源
        最近更新 更多